react - ¿Hay alguna forma de no devolver algo con CoffeeScript?
objects coffeescript (5)
Parece que CoffeeScript devuelve automáticamente el último elemento en un ámbito. ¿Puedo evitar esta funcionalidad?
Parece que las funciones en CoffeeScript siempre deben devolver algo, incluso null
. En C, tiene void
como tipo de devolución. ->
, la función vacía, compila a (function() {})
, por lo que es la única función que no devuelve nada.
Sí, con un return
como la última línea de una función.
Por ejemplo,
answer = () ->
42
extrovert = (question) ->
answer()
introvert = (question) ->
x = answer()
# contemplate about the answer x
return
Si desea ver a qué js compila el café, intente http://bit.ly/1enKdRl . (He utilizado coffeescript redux para mi ejemplo)
Solo algo divertido (ctional)
suppressed = _.compose Function.prototype, -> ''do your stuff''
Function.prototype
sí es una función que siempre devuelve nada. Puede usar componer para canalizar su valor de retorno en este agujero negro y la función compuesta nunca devolverá nada.
Tiene que devolver nada explícitamente, o dejar una expresión que evalúe como indefinida en la parte inferior de su función:
fun = ->
doSomething()
return
O:
fun = ->
doSomething()
undefined
Esto es lo que recomienda el doc. Al usar las comprensiones:
Tenga cuidado de no devolver accidentalmente los resultados de la comprensión en estos casos, agregando un valor de retorno significativo , como verdadero o nulo, al final de su función .
Sin embargo, podría escribir un contenedor como este:
voidFun = (fun) ->
->
fun(arguments...)
return
(Observe el operador de splat aquí ( ...
))
Y úsala así cuando defines funciones:
fun = voidFun ->
doSomething()
doSomethingElse()
O así:
fun = voidFun(->
doSomething()
doSomethingElse()
)
longRunningFunctionWithNullReturn = ->
longRunningFunction()
null