OberonCore
https://forum.oberoncore.ru/

Аналог типа bool? из C# (true, false, null)
https://forum.oberoncore.ru/viewtopic.php?f=35&t=5006
Страница 1 из 1

Автор:  kolesiko [ Четверг, 27 Февраль, 2014 20:24 ]
Заголовок сообщения:  Аналог типа bool? из C# (true, false, null)

Очень удобно, чтобы делать что-то вроде мемоизации. Проверяем, что переменная равна null, и тогда вычисляем правильное значение. Как-то так:

Код:
BOOLEAN3 strike = Unknown;

PROCEDURE isStrike(): BOOLEAN3
  IF strike = Unknown THEN
    strike = Здесь идут вычисления;
  END
  RETURN strike;
END

Автор:  Rifat [ Четверг, 27 Февраль, 2014 20:43 ]
Заголовок сообщения:  Re: Аналог типа bool? из C# (true, false, null)

Можно и по-другому:
Код:
TYPE
  Bool = POINTER TO RECORD
               b: BOOLEAN
           END;

Только зачем?

Автор:  kolesiko [ Четверг, 27 Февраль, 2014 21:47 ]
Заголовок сообщения:  Re: Аналог типа bool? из C# (true, false, null)

Rifat писал(а):
Можно и по-другому:


Спасибо, а то мне единственное, что приходило в голову - использовать INTEGER (-1, 0, 1) и функции наподобие isDefined(), isTrue(), isFalse()...

Цитата:
Только зачем?


Я же привел пример использования. Или вы можете предложить что-то более идиоматичное?

Автор:  Пётр Кушнир [ Пятница, 28 Февраль, 2014 11:02 ]
Заголовок сообщения:  Re: Аналог типа bool? из C# (true, false, null)

Rifat писал(а):
Можно и по-другому:
Код:
TYPE
  Bool = POINTER TO RECORD
               b: BOOLEAN
           END;

Только зачем?

Ну, кстати, при работе с SQL можно заметить, что там некоторые поля в таблицах могут быть Nullable, то есть кроме валидных значений для типа появляется еще и общее NULL. И в КП его иногда просто не на что отобразить при получении результатов запроса.

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/