Eu preciso definir o valor para a
que depende de uma condição.
Qual é a maneira mais curta de fazer isso com o CoffeeScript?
Por exemplo, é assim que eu faria em JavaScript:
a = true ? 5 : 10 # => a = 5
a = false ? 5 : 10 # => a = 10
javascript
coffeescript
ternary-operator
evfwcqcg
fonte
fonte
if else then
</ discurso>a = true ? 5 : 10
é CoffeeScript válido, mas não significa uma estrutura ternária, em vez (em javascript) que significa:a = true ? true : {5:10}
o que é conhecido como um mau thing® Além dissoa = false ? {5 : 10}
, em CoffeeScript seguida (em javascript) é equivalente a:a = true ? false : {5:10}
pelo que vale, não acho que seja bom.beast = yeti ? "bear"
ouif yeti? then alert "It's a yeti!"
usa?
muito bem.if/then/else
já é uma expressão e faz a mesma coisa. Se você realmente está sentindo falta disso, está mais acostumado à sintaxe C ou JavaScript do que realmente precisa. Se não for legível o suficiente, e às vezes acontece, basta colocar toda a expressão entre parênteses. O operador?
foi poupado para verificações mais úteis ausentes no JavaScript, como já foi declarado por @PaulOliver. Operador existente é o melhor.Respostas:
Como tudo é uma expressão e, portanto, resulta em um valor, você pode apenas usar
if/else
.Você pode ver mais sobre exemplos de expressão aqui .
fonte
if..then..else
é uma substituição muito detalhada para o que deveria ser uma expressão concisa. E?: Afinal é um padrão muito arraigado entre muitas linguagens, JavaScript entre elas. Não obstante tudo isso, parece ser gravada na pedra nesta fase].if then else
na mesma linha, faça, são 7 caracteres adicionais para muito mais clareza e elegância.->
maisfunction
ou{ }
maisbegin .. end
, porque eu gosto de ver um sinal de alta-ruído, onde as palavras são reservados para a lógica específica de função e a lógica operacional é principalmente relegado para símbolos.Veja a documentação .
fonte
Em quase qualquer idioma, isso deve funcionar:
fonte
false
de valores como 0, null, indefinido, ... e assim por diante&&
marca for verdadeira; caso contrário, retornaria a última parte, que não é como os ternários condicionais funcionam.Coffeescript não suporta operador ternário javascript. Aqui está o motivo do autor do coffeescript :
Consulte o problema do github: https://github.com/jashkenas/coffeescript/issues/11#issuecomment-97802
fonte
Você também pode escrevê-lo em duas instruções se o uso for verdadeiro:
Ou use uma instrução switch se precisar de mais possibilidades:
Com um booleano, pode ser muito grande, mas acho muito legível.
fonte
Versão multilinha (por exemplo, se você precisar adicionar um comentário após cada linha):
fonte
CoffeeScript
não possui operador ternário. É o que dizem os médicos.Você ainda pode usar uma sintaxe como
É muito mais claro.
fonte