mel*_*des 5

在这两种形式中,创建的对象将具有相同的类型并具有相同的元素.主要区别在于,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,因为数组与上次调用方法时修改的数组相同.

因此,在使用文字时应该小心,主要是将它们留给不会发生变异的情况.