Wygląda na to, że CoffeeScript automatycznie zwraca ostatnią pozycję w zakresie. Czy mogę uniknąć tej funkcji?
Wygląda na to, że CoffeeScript automatycznie zwraca ostatnią pozycję w zakresie. Czy mogę uniknąć tej funkcji?
Odpowiedzi:
Musisz jawnie nic nie zwracać lub pozostawić na dole funkcji wyrażenie oceniające jako niezdefiniowane:
fun = ->
doSomething()
return
Lub:
fun = ->
doSomething()
undefined
Oto, co zaleca dokument, gdy używasz wyrażeń:
Uważaj, aby przypadkowo nie zwrócić wyników interpretacji w takich przypadkach, dodając znaczącą wartość zwracaną - na przykład true - lub null na końcu funkcji .
Możesz jednak napisać opakowanie w ten sposób:
voidFun = (fun) ->
->
fun(arguments...)
return
(Zwróć uwagę na operator splat tutaj ( ...))
I używaj tego w ten sposób podczas definiowania funkcji:
fun = voidFun ->
doSomething()
doSomethingElse()
Lub tak:
fun = voidFun(->
doSomething()
doSomethingElse()
)
return, undefinedlub nulldo końca mojej funkcji. Jednak dodawanie nullwydaje mi się z jakiegoś powodu niewłaściwe. Czy mam rację, zakładając, że jest to najgorszy wybór z całej trójki?
undfinedna końcu. returnWydaje się, że użycie pustej instrukcji nie zwraca nic lepszego niż pozostawienie znaku undefinedna końcu funkcji, więc pusta returnwydaje się być lepszą opcją.
fun(arguments...)lepiej zadzwonić fun.apply(this, arguments).
Tak, z a returnjako ostatnim wierszem funkcji.
Na przykład,
answer = () ->
42
extrovert = (question) ->
answer()
introvert = (question) ->
x = answer()
# contemplate about the answer x
return
Jeśli chcesz zobaczyć, do czego skompilowana jest kawa, wypróbuj http://bit.ly/1enKdRl . (W moim przykładzie użyłem reduxu coffeescript)
Po prostu coś fajnego (opcjonalne)
suppressed = _.compose Function.prototype, -> 'do your stuff'
Function.prototypesama w sobie jest funkcją, która zawsze nic nie zwraca. Możesz użyć funkcji Compose, aby przesłać swoją zwracaną wartość do tej czarnej dziury, a skomponowana funkcja nigdy niczego nie zwróci.
Wygląda na to, że funkcje w CoffeeScript zawsze muszą coś zwracać, nawet null. W C masz voidjako typ zwracany.
->, pusta funkcja, kompiluje się do (function() {}), więc jest to jedyna funkcja, która nic nie zwraca.
return;działa w C, JavaScript i CoffeeScript, aby zwrócić wartość void.