Является ли isDefined () устаревшим и занимает ли место isNull ()? - PullRequest
2 голосов
/ 01 декабря 2011

Я использую ColdFusion 9.0.1

Я недавно читал, что в ColdFusion 9 теперь рекомендуется использовать isNull() и не использовать isDefined().

Я не нашел много информации об этом вообще в сети.

Есть ли какое-либо преимущество в использовании того или другого в ColdFusion 9?

Ответы [ 4 ]

6 голосов
/ 01 декабря 2011

Нет, isDefined () не считается устаревшим и, скорее всего, не будет устаревшим.

IsNull (), как говорит Шон, предназначен для работы с NULL, возвращаемыми из Java, особенно для возвращаемых из Hibernate (интеграция ORM).

StructKeyExist () является более точным, чем isDefined (""), но с технической точки зрения нет ничего плохого в использовании isDefined (), и я бы спросил, будет ли structKeyExist () работать в каждой ситуации. Каждая переменная в структуре или что-то вроде? Я не уверен.

Я не думаю, что вам нужно беспокоиться о том, что isDefined () исчезнет в ближайшее время.

5 голосов
/ 01 декабря 2011

Я полагаю, что настоящая причина, по которой isNull () была добавлена, заключается в том, чтобы предоставить более конкретный способ тестирования связанных с Java NULL, которые возвращаются из объектов, служб и т. Д., Тогда как isDefined () проверяет, существует ли переменная илине.

На самом деле две отдельные функции.

3 голосов
/ 01 декабря 2011

Я знаю, что в целом люди уходили от этого в течение некоторого времени.Он использовался главным образом для определения того, существует ли переменная в определенной области, но structKeyExists () более точен для этого.IsDefined () очень усердно работает, чтобы найти любой возможный экземпляр переменной, которую вы просили.( Шон Корфилд мог сказать немного о structKeyExists против isDefined .)

Я нигде не видел рекомендации использовать isNull () вместо isDefined.На самом деле, я ожидал бы, что isNull вернет ошибку, если вы передадите ей неопределенную переменную, но, очевидно, это работает.

Как вы делаете динамические переменные, хотя?попробуйте обозначение массива ...

isNull(form["address_" & i])

... но если значение i не определено, выдается ошибка.

0 голосов
/ 24 декабря 2013

Относительно isDefined(varName) моя CLIENT.somevarname переменная имеет нулевое значение, и когда я пытаюсь ее оценить

<cfif isDefined("somevarname") and val(somevarname)> </cfif>

.. выдает ошибку:

Элемент somevarnameis не определен в КЛИЕНТЕ

Я использую его для обработки таким образом, чтобы предотвратить ошибку при условном сравнении значения:

   len(trim(CLIENT.somevarname)) eq 0 

Я перешел на isNull(), и он работает лучше.

...