Другие ответы, похоже, в значительной степени затронули его, хотя, кажется, стоит указать и ссылаться на Augmented Assignments PEP 203 :
Они [расширенные операторы присваивания] реализуют тот же оператор, что и их обычная двоичная форма, за исключением того, что операция выполняется «на месте», когда объект левой стороны поддерживает ее, а левая сторона - только оценивается один раз.
...
Идея расширенного назначения в Python заключается в том, что это не просто более простой способ написать общую практику хранения результата бинарной операции в ее левом операнде, но также и способ для левого операнда, о котором идет речь, знать, что он должен действовать «на себя», а не создавать модифицированную копию самого себя.
IIf является фактической функцией, таким образом, все аргументы оценены. , Если ключевое слово было добавлено к VB.NET 2008 для обеспечения функциональности короткого замыкания, Вы ожидаете.
Попытка
logLine = "e.Value: " + If(e.Value Is Nothing, "", e.Value.ToString())
VB не выполняет оценку короткого замыкания в Iif. В вашем случае e.Value.ToString () оценивается независимо от того, является ли e.Value ничем.
Это - ожидаемое поведение.
IIF
функция; поэтому параметры для функции будут оценены прежде, чем отправить его в функцию.
Напротив, тернарный оператор в C# является конструкцией языка, которая предотвращает оценку второго параметра, если выражение троичного верно.
c("a","b","c","d"):=list(1,2)
помещает 1 в a
и c
, и 2 в b
и d
. Если любой из столбцов don' t существуют they' ll быть добавленным ссылкой. Не уверенный, насколько полезный :=
переработка на практике. It' s больше для c("a","b","c"):=NULL
, который удаляет те 3 столбца. Внутренне that' s перерабатывание ПУСТОГО УКАЗАТЕЛЯ к (семантической) длине списка 3.
– Matt Dowle
3 July 2012 в 10:49
debug(myfun)
для наблюдения, как часто это называют: it' s однажды. большой. – Florian Oswald 3 July 2012 в 10:33