Самый простой способ проверить, является ли строка пустой или пустой
у меня есть этот код, который проверяет пустой или пустой строкой. Это работает в тестировании.
eitherStringEmpty= (email, password) ->
emailEmpty = not email? or email is ''
passwordEmpty = not password? or password is ''
eitherEmpty = emailEmpty || passwordEmpty
test1 = eitherStringEmpty "A", "B" # expect false
test2 = eitherStringEmpty "", "b" # expect true
test3 = eitherStringEmpty "", "" # expect true
alert "test1: #{test1} test2: #{test2} test3: #{test3}"
мне интересно, есть ли лучший способ, чем not email? or email is ''. Могу ли я сделать эквивалент C# string.IsNullOrEmpty(arg) в CoffeeScript с одним вызовом? Я всегда мог бы определить функцию для него (как и я), но мне интересно, есть ли что-то в языке, что мне не хватает.
11 ответов:
это не совсем эквивалент, но
email?.lengthбудет истина, если.lengthсобственность. Если выnotэто значение результат должен вести себя так, как вы хотите, как для строк и массивов.если
nullили нет.length, потомemail?.lengthбудет оценено какnull, который является falsey. Если у него есть.lengthтогда это значение будет оцениваться по его длине, которая будет ложной, если она пуста.ваша функция может быть реализовано как:
eitherStringEmpty = (email, password) -> not (email?.length and password?.length)
Это тот случай, когда" правдивость " пригодится. Вам даже не нужно определять функцию для этого:
test1 = not (email and password)почему это работает?
'0' // true '123abc' // true '' // false null // false undefined // false
unless email? and email console.log 'email is undefined, null or ""'сначала проверьте, не является ли электронная почта неопределенной и не нулевой с экзистенциальным оператором, а затем, если вы знаете, что она существует
and emailчасть будет возвращать только false, если строка электронной почты пуста.
Если вам нужно проверить, что содержимое является строкой, а не нулем и не массивом, используйте простой тип сравнения:
if typeof email isnt "string"
здесь jsfiddle демонстрирует очень простой способ сделать это.
в основном вы просто делаете это javascript:
var email="oranste"; var password="i"; if(!(email && password)){ alert("One or both not set"); } else{ alert("Both set"); }в coffescript:
email = "oranste" password = "i" unless email and password alert "One or both not set" else alert "Both set"надеюсь, это кому-то поможет :)
Я думаю, что вопросительный знак-самый простой способ вызвать функцию на вещи, если вещь существует.
car = { tires: 4, color: 'blue' }вы хотите получить цвет, но только если автомобиль не существует...
coffeescript:
car?.colorпереводится на javascript:
if (car != null) { car.color; }он называется экзистенциальным оператором http://coffeescript.org/documentation/docs/grammar.html#section-63
вместо принятого ответа
passwordNotEmpty = !!passwordможно использоватьpasswordNotEmpty = if password then true else falseэто дает тот же результат (разница только в синтаксисе).
в первом столбце есть значение, во втором-результат
if value:0 - false 5 - true 'string' - true '' - false [1, 2, 3] - true [] - true true - true false - false null - false undefined - false
на основе ответ о проверке, если переменная имеет
truthyзначение или нет , вам просто нужно одну строку:result = !email or !passwordи вы можете попробовать его для себя на этот онлайн-консоль Coffeescript
Я уверен, что ответ @thejh был достаточно хорош, чтобы проверить пустую строку, но, Я думаю, что мы часто должны проверять, что " это существует? а потом мы должны проверить, пусто ли оно? включить строку, массив и объект'
Это сокращенный способ для CoffeeScript, чтобы сделать это.
tmp? and !!tmp and !!Object.keys(tmp).lengthЕсли мы сохраним этот порядок вопросов, это будет проверено этим порядком 1. существует ли она? 2. не пустая строка? 3. не пустой объект?
Так что не было никаких проблем все переменные даже в случае не существовало.