Возвращаемое значение #value: message при отправке в блок — это значение последнего предложения в этом блоке. Таким образом, [ 1 + 2. 3 + 4. ] value
оценивается как 7. Иногда мне трудно его использовать. Есть ли способ явно установить возвращаемое значение и остановить выполнение блока?
В качестве упражнения попробуйте переписать этот блок, не используя мое воображаемое сообщение #return:, и посмотрите, насколько уродливым оно получится. Я должен что-то упустить.
[ :one :two |
one isNil ifTrue: [ two isNil ifTrue: [ self return: nil ] ifFalse: [ self return: true ] ].
two ifNil: [ self return: false ].
(one > two)
ifTrue: [ self return: true ]
ifFalse: [ (one < two)
ifTrue: [ self return: false ]
ifFalse: [ self return: nil ]
].
]
РЕДАКТИРОВАТЬ: self return: sth
действительно ерунда, но она имеет смысл на некотором уровне :)