Рассмотрите эти фрагменты кода:
def int_or_default(x, default=0):
if x.isdigit():
return int(x)
else:
return default
def int_or_default(x, default=0):
try:
return int(x)
except ValueError:
return default
Оба они выглядят правильно, не так ли? Но один из них - нет.
Первый, используя LBYL, терпит неудачу из-за тонкого различия между isdigit
и isdecimal
; когда вызывается со строкой «①²³
Остерегайтесь использования ilike, потому что оно позволило бы кому-то вводить вещи как "тестовый %" и соответствие. Я использую следующее, чтобы сделать нечувствительное к регистру равное по одному приложению:
...
Criteria crit=session.createCriteria(Event.class);
crit.add(Expression.eq("rsvpCode","test1").ignoreCase());
...
Я не абсолютно уверен, но когда Вы используете Restriction.eq, Вы получаете объект SimpleExpression, и что объект поддерживает ignoreCase () операция, которую я никогда не пытался использовать, но кажется, что это могло иметь значение.
Престижность для Спящего режима для того, чтобы не зарегистрировать то, что на самом деле делает этот метод.