is ObjAt
ObjAt
的子类,应该用来指示一个类生成的是值类型对象,换句话说,在初始化后,这些对象是不可变的。
my = a => 42; # mutable Hashsay .WHICH; # OUTPUT: «ObjAt.new("Hash|1402...888")»my is Map = a => 42; # immutable Mapsay .WHICH; # OUTPUT: «ValueObjAt.new("Map|AAF...09F61F")»
如果你创建一个应该被视为值类型的类,你应该向该类添加一个返回 ValueObjAt
对象的 WHICH
方法,例如
请注意,通常的做法是始终以对象名称开头,后跟 "|",来开始标识字符串。这是为了防止与可能生成类似字符串值的其它类混淆:类名应该足以作为防止冲突的差异化因素。