A slightly technical blog by Stephen D. Strowes.
Random header image... Refresh for more!

Generic Object Interning

Whipped together an nice little object interning facility:

class RefStore[T<:AnyRef]
{
	import scala.collection.mutable.HashSet
	var store = new HashSet[T]()

	def intern(ref: T): T = {
		store.findEntry(ref) match {
			case None => {
				store += ref
				// Added new shared ref, ref
				ref
			}
			case Some(r) => {
				// Returning shared ref, r
				r
			}
		}
	}
}

Dirt simple, generic, type safe.