在Smalltalk(特别是Pharo / Squeak)中,我想知道是否可以在消息的参数中忽略“ [”和“]”,例如at:ifAbsent:如果不需要块,像这样;

^ bookTitles at: bookID ifAbsent: ''.




^ books at: bookID ifAbsent: nil.


该代码有效,因为(在Pharo / Squeak中)Object >> value仅返回self。但是我想知道这种用法的接受程度,或者即使您不在乎参数是快速求值还是多次求值,也应该始终键入[和]。

最佳答案

签名:

at: key ifAbsent: aBlock


声明打算将块用作第二个参数...
但是Smalltalk并不是一种强类型语言,那么,您可以在那里传递哪种对象?理解#value消息的任何一种,因此,在每种情况下都要注意#value的每种特殊含义,但要利用多态性!

10-08 18:55