Передача необязательной логической переменной

Иногда мы хотим необязательный параметр

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 отсутствуют в Objective-C? Я плохо знаю Smalltalk, но знаю некоторые Objective-C. И я очень заинтересован в Smalltalk. Их синтаксис сильно отличается, но основные структуры времени выполнения (что означает особенности) очень...

Я плохо знаю Smalltalk, но я знаю некоторые цели-C. И я очень заинтересован в Smalltalk.

Их синтаксис сильно отличается, но основные структуры среды выполнения (что означает особенности) очень похожи. А функции среды выполнения поддерживаются средой выполнения.

Я думал, что два языка очень похожи в этом значении, но есть много функций на Smalltalk, которые отсутствуют во время выполнения Objective-C. Например, thisContext , который управляет стеком вызовов. Или нелокальное возвращение , которое разматывает выполнение блока. Блок . Он был только на Smalltalk, так или иначе теперь он реализован и на Objective-C.

Поскольку я не специалист по Smalltalk, я не знаю таких характеристик. Специально для продвинутых пользователей. Какие функции доступны только в Smalltalk? По сути, я хочу знать расширенные возможности Smalltalk. Так что это нормально функции, уже реализованы на Objective-C, как блок .

5
задан Kirk Broadhurst 2 May 2012 в 05:51
поделиться