Схоже на те, що CoffeeScript автоматично повертає останній елемент в області застосування. Чи можу я уникнути цієї функції?
Схоже на те, що CoffeeScript автоматично повертає останній елемент в області застосування. Чи можу я уникнути цієї функції?
Відповіді:
Вам потрібно явно нічого не повертати або залишати невиразним вираз у нижній частині функції:
fun = ->
doSomething()
return
Або:
fun = ->
doSomething()
undefined
Ось що рекомендує доктор під час використання розумінь:
Будьте уважні, що ви не випадково повертаєте результати розуміння в цих випадках, додаючи змістовне повернене значення - як справжнє - або нулеве, внизу функції .
Однак ви можете написати обгортку так:
voidFun = (fun) ->
->
fun(arguments...)
return
(Зверніть увагу на оператора splat тут ( ...
))
І використовуйте його так, визначаючи функції:
fun = voidFun ->
doSomething()
doSomethingElse()
Або так:
fun = voidFun(->
doSomething()
doSomethingElse()
)
return
, undefined
або null
до кінця моєї функції. Однак додавання null
мені чомусь здається неправильним. Чи правильно я вважаю це найгіршим вибором з трьох?
undfined
в кінці. Використання порожнього return
оператора, здається, виражає повернення нічого кращого, ніж залишити а undefined
в кінці функції, тому порожнє return
здається кращим варіантом.
fun(arguments...)
цього було б краще подзвонити fun.apply(this, arguments)
.
Так, з return
останнім рядком функції.
Наприклад,
answer = () ->
42
extrovert = (question) ->
answer()
introvert = (question) ->
x = answer()
# contemplate about the answer x
return
Якщо ви хочете подивитися, до чого складається кава, спробуйте http://bit.ly/1enKdRl . (Я використовував кофеескрипт-редукс для свого прикладу)
Просто щось цікаве
suppressed = _.compose Function.prototype, -> 'do your stuff'
Function.prototype
сама по собі функція, яка завжди нічого не повертає. Ви можете використовувати композицію, щоб передати ваше повернене значення в цей чорнобір, і складена функція ніколи нічого не поверне.
Здається, функції в CoffeeScript завжди повинні щось повертати, навіть null
. В C у вас є void
тип повернення.
->
, порожня функція збирається в (function() {})
, тому це єдина функція, яка нічого не повертає.
return;
працює в C, JavaScript та CoffeeScript, щоб повернути недійсне значення.