5
A
回答
5
在这两种形式中创建的对象将是与相同的元件相同类型的和。主要区别在于,在使用Array with:
时,每次执行代码时都会得到一个新实例,并且#()
可以在方法被接受/编译时创建实例,以便每次执行代码时数组的实例都是一样。
考虑下面的代码:
doSomething
array := #(6 7 8).
Transcript show: array.
array at: 1 put: 3.
第一次执行DoSomething的一切都会正常。第二次打印3,7,8时,因为该阵列与上次调用方法时修改的 相同。
所以,在使用文字时应该小心,主要是让它们在不会发生突变的情况下使用。
3
考虑的示例类这种方法与实例变量门槛:
Example >> #threshold
^threshold
Example >> #threshold: anInteger
threshold := anInteger
Example >> #initialize
threshold := 0
Example class >> #new
^super new initialize
Example >> testArraySum
| a |
a := #(4 8 10).
a sum > threshold ifTrue: [ a at: 1 put: a first - 2 ].
^a sum
现在,如果你读testArraySum的代码,如果门槛doesn't变化,它应该始终retunr相同,shouldn'它呢?因为你开始设置一个固定的值,然后减去(或不是,根据阈值,但我们说它是固定的)一个固定的数量,所以它应该是... ... 20.
那么,如果你评估
Example new testArraySum
几次,你会得到20,18,16 ......因为数组#(4 8 10)被修改。 另一方面,
Example >> testConstantArraySum
| a |
a := Array new: 3.
a at: 1 put: 4; at: 2 put: 8; at: 3 put: 10.
a sum > threshold ifTrue: [ a at: 1 put: a first - 2 ].
^a sum
是真的不变。
相关问题
- 1. 字典和数组有什么区别?
- 2. IEnumerable和数组有什么区别?
- 3. int和char数组有什么区别?
- 4. malloc和数组有什么区别
- 5. 数组和ArrayList有什么区别?
- 6. 数组和散列有什么区别?
- 7. 字符串和Javascript中的字符数组有什么区别?
- 8. NumPy数组和简单Python数组有什么区别?
- 9. 数组地址和数组本身有什么区别吗?
- 10. 原始数组和引用数组之间有什么区别?
- 11. 嵌套数组和关联数组有什么区别?
- 12. Ruby中的%w {}和%W {}大小写W数组字面量有什么区别?
- 13. c#中下面的数组声明有什么区别?
- 14. 这两个数组有什么区别?
- 15. 数组与对象有什么区别?
- 16. 十六进制和字符数组打印有什么区别?
- 17. PHP数组中的这两个字符串有什么区别?
- 18. Rank和指定数组中的[,]有什么区别?
- 19. C中的静态和动态数组有什么区别?
- 20. darray和mpi中的子数组有什么区别?
- 21. ndarray和numpy中的数组有什么区别?
- 22. ruby中的数组和范围有什么区别?
- 23. java和C++中的多维数组有什么区别?
- 24. lucene中的分组和分面有什么区别3.5
- 25. 字符数组的ESI和EBX的主要区别是什么?
- 26. 在Numpy中使用数组时,resize和reshape有什么区别?
- 27. C中的数组参数有什么区别?
- 28. CPU和芯片组有什么区别?
- 29. 元组和compress_pair有什么区别?
- 30. 组件和指令有什么区别?
请注意,数组元素之间不存在彗星分隔符。上面的例子将被解析为#(#element1#','#element2#','...) –