Parece que o CoffeeScript retorna automaticamente o último item em um escopo. Posso evitar essa funcionalidade?
Parece que o CoffeeScript retorna automaticamente o último item em um escopo. Posso evitar essa funcionalidade?
Respostas:
Você não deve retornar nada explicitamente ou deixar uma expressão avaliada como indefinida na parte inferior de sua função:
fun = ->
doSomething()
return
Ou:
fun = ->
doSomething()
undefined
Isso é o que o doc recomenda, ao usar compreensões:
Tenha cuidado para não retornar acidentalmente os resultados da compreensão nesses casos, adicionando um valor de retorno significativo - como true - ou nulo, na parte inferior de sua função .
Você poderia, no entanto, escrever um wrapper como este:
voidFun = (fun) ->
->
fun(arguments...)
return
(Observe o operador splat aqui ( ...
))
E use-o assim ao definir funções:
fun = voidFun ->
doSomething()
doSomethingElse()
Ou assim:
fun = voidFun(->
doSomething()
doSomethingElse()
)
return
, undefined
ou null
até o fim da minha função. No entanto, adicionar null
parece errado para mim por algum motivo. Estou certo em presumir que é a pior escolha entre as três?
undfined
no final. Usar uma return
instrução vazia parece expressar return nada melhor do que deixar um undefined
no final da função, portanto, vazio return
parece ser a melhor opção.
fun(arguments...)
, seria melhor ligar fun.apply(this, arguments)
.
Sim com um return
como a última linha de uma função.
Por exemplo,
answer = () ->
42
extrovert = (question) ->
answer()
introvert = (question) ->
x = answer()
# contemplate about the answer x
return
Se você gostaria de ver o que js o café compila, tente http://bit.ly/1enKdRl . (Eu usei redux do coffeescript para o meu exemplo)
Apenas algo divertido (opcional)
suppressed = _.compose Function.prototype, -> 'do your stuff'
Function.prototype
em si é uma função que sempre não retorna nada. Você pode usar compose para canalizar seu valor de retorno para este buraco negro e a função composta nunca retornará nada.
Parece que as funções em CoffeeScript devem sempre retornar algo, mesmo null
. Em C, você tem void
como tipo de retorno.
->
, a função vazia compila para (function() {})
, portanto, é a única função que não retorna nada.
return;
funciona em C, JavaScript e CoffeeScript para retornar um valor void.