Eu tenho este código que verifica a string vazia ou nula. Está funcionando em testes.
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}"
O que estou me perguntando é se existe uma maneira melhor do que not email? or email is ''
. Posso fazer o equivalente a C # string.IsNullOrEmpty(arg)
em CoffeeScript com uma única chamada? Eu sempre poderia definir uma função para ele (como fiz), mas estou me perguntando se há algo na linguagem que estou perdendo.
coffeescript
Jcollum
fonte
fonte
!!
versão, que é uma maneira comum de converter essencialmente em booleano. Se for importante, é quase certo que seja mais rápido do que definir uma função, como Jeremy sugeriu.Não é totalmente equivalente, mas
email?.length
só será verdadeiro seemail
não for nulo e tiver uma.length
propriedade diferente de zero . Se vocênot
usar esse valor, o resultado deve se comportar como você deseja para strings e arrays.Se
email
fornull
ou não tiver um.length
,email?.length
será avaliado comonull
, que é falsey. Se tiver um,.length
então este valor será avaliado como seu comprimento, que será falso se estiver vazio.Sua função pode ser implementada como:
fonte
Este é um caso em que "veracidade" é útil. Você nem precisa definir uma função para isso:
Por que isso funciona?
fonte
.trim()
sobre o valor como parte de sua lógica de validação. A resposta é mais sobre a sintaxe CS.Primeiro verifique se o email não é indefinido e não nulo com o operador existencial, então se você souber que ele existe, a
and email
parte retornará falso apenas se a string do email estiver vazia.fonte
Você pode usar a operação coffeescript ou =
fonte
Se você precisar verificar se o conteúdo é uma string, não nula e nem uma matriz, use um tipo de comparação simples:
fonte
typeof email isnt "string"
retorna falso para ambos''
e'a'
Aqui está um jsfiddle demonstrando uma maneira muito fácil de fazer isso.
Basicamente, você simplesmente faz isso em javascript:
In coffescript:
Espero que isso ajude alguém :)
fonte
Acho que o ponto de interrogação é a maneira mais fácil de chamar uma função em uma coisa se a coisa existir.
por exemplo
você quer pegar a cor, mas só se o carro existir ...
coffeescript:
traduz para javascript:
é chamado de operador existencial http://coffeescript.org/documentation/docs/grammar.html#section-63
fonte
Tenho certeza de que a resposta de @thejh foi boa o suficiente para verificar a string vazia, MAS, acho que frequentemente precisamos verificar se 'Isso existe?' e então precisamos verificar 'Está vazio? incluem string, array e objeto '
Esta é a maneira abreviada de CoffeeScript fazer isso.
Se mantivermos esta ordem de perguntas, isso seria verificado por esta ordem 1. ela existe? 2. string não vazia? 3. objeto não vazio?
então não houve problemas para todas as variáveis mesmo no caso de não existir.
fonte
Com base nesta resposta sobre como verificar se uma variável tem um
truthy
valor ou não, você só precisa de uma linha:E você pode tentar por si mesmo neste console Coffeescript online
fonte
Em vez da resposta aceita,
passwordNotEmpty = !!password
você pode usarEle dá o mesmo resultado (a diferença apenas na sintaxe).
Na primeira coluna está um valor, na segunda está o resultado de
if value
:fonte