hog*_*lyo 5 smalltalk gnu-smalltalk
除了大小.
例如:
|arr|. arr := Array new: 10
Run Code Online (Sandbox Code Playgroud)
和
#(element1,element2, ...)
Run Code Online (Sandbox Code Playgroud)
在这两种形式中,创建的对象将具有相同的类型并具有相同的元素.主要区别在于,Array with:每次执行代码时都会使用一个新实例,并且在#( )接受/编译方法时会获得实例,因此每次执行代码时,数组的实例都是相同的.
请考虑以下代码:
doSomething
array := #(6 7 8).
Transcript show: array.
array at: 1 put: 3.
Run Code Online (Sandbox Code Playgroud)
第一次执行doSomething时一切都会正常.第二次打印3,7,8,因为数组与上次调用方法时修改的数组相同.
因此,在使用文字时应该小心,主要是将它们留给不会发生变异的情况.