Иногда мы хотим необязательный параметр
function doSomething(foo:Integer; bar:TObject=nil)
begin
if bar <> nil then // do something optional with bar
....
end
Как сделать эквивалент с логическим, что позволяет мне дифференцировать между двумя логическими значениями и «нет значения»?
function doSomething(foo:Integer; bar:Boolean=nil) // Won't compile
begin
if bar <> nil then // do something optional with bar
end
Очевидно, что это не будет компилировать как логическое не может быть равно нулю.
В основном, я хочу параметр с тремя возможными состояниями; true, false или «не указан».
-121--1217238-Я плохо знаю Smalltalk, но я знаю некоторые цели-C. И я очень заинтересован в Smalltalk.
Их синтаксис сильно отличается, но основные структуры среды выполнения (что означает особенности) очень похожи. А функции среды выполнения поддерживаются средой выполнения.
Я думал, что два языка очень похожи в этом значении, но есть много функций на Smalltalk, которые отсутствуют во время выполнения Objective-C. Например, thisContext
, который управляет стеком вызовов. Или нелокальное возвращение
, которое разматывает выполнение блока. Блок
. Он был только на Smalltalk, так или иначе теперь он реализован и на Objective-C.
Поскольку я не специалист по Smalltalk, я не знаю таких характеристик. Специально для продвинутых пользователей. Какие функции доступны только в Smalltalk? По сути, я хочу знать расширенные возможности Smalltalk. Так что это нормально функции, уже реализованы на Objective-C, как блок
.