Схоже на те, що 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, щоб повернути недійсне значення.