Есть ли способ не вернуть что-то с помощью CoffeeScript?

Кажется, что CoffeeScript автоматически возвращает последний элемент в области видимости. Могу ли я избежать этой функциональности?

113 голосов | спросил Shamoon 12 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowMon, 12 Sep 2011 21:17:30 +0400 2011, 21:17:30

5 ответов


0

Вы должны явно ничего не возвращать или оставлять выражение с неопределенным значением в нижней части своей функции:

fun = ->
    doSomething()
    return

Или:

fun = ->
    doSomething()
    undefined

Вот что рекомендует документ при использовании пониманий:

  

Будьте осторожны, чтобы не случайно вернуть результаты понимания в этих случаях, добавив значимое возвращаемое значение - как true - или null, в конец своей функции .


Однако вы можете написать обертку так:

voidFun = (fun) ->
    ->
        fun(arguments...)
        return

(обратите внимание на оператор сплат здесь (...))

И используйте это так при определении функций:

fun = voidFun ->
    doSomething()
    doSomethingElse()

Или вот так:

fun = voidFun(->
    doSomething()
    doSomethingElse()
)
ответил arnaud576875 12 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowMon, 12 Sep 2011 21:21:05 +0400 2011, 21:21:05
0

Да, с return в качестве последней строки функции.

Например,

answer = () ->
  42

extrovert = (question) -> 
  answer()

introvert = (question) ->
  x = answer()
  # contemplate about the answer x
  return 

Если вы хотите посмотреть, из чего состоит кофе, попробуйте http://bit.ly/1enKdRl. (Я использовал coffeescript redux для моего примера)

ответил gprasant 31 TueEurope/Moscow2013-12-31T11:28:42+04:00Europe/Moscow12bEurope/MoscowTue, 31 Dec 2013 11:28:42 +0400 2013, 11:28:42
0

Просто что-то веселое (условное)

suppressed = _.compose Function.prototype, -> 'do your stuff'

Function.prototype сама по себе является функцией, которая всегда ничего не возвращает. Вы можете использовать compose, чтобы передать возвращаемое значение в эту черную дыру, и составная функция никогда ничего не вернет.

ответил ming_codes 2 AM00000050000002431 2013, 05:27:24
0
longRunningFunctionWithNullReturn = ->
  longRunningFunction()
  null
ответил yfeldblum 12 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowMon, 12 Sep 2011 21:22:53 +0400 2011, 21:22:53
0

Кажется, функции в CoffeeScript всегда должны что-то возвращать, даже null. В C у вас есть void в качестве возвращаемого типа. ->, пустая функция, компилируется в (function() {}), так что это единственная функция, которая ничего не возвращает.

ответил L01man 24 J0000006Europe/Moscow 2012, 13:10:45

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132