Есть сокращение CoffeeScript, которым вы можете воспользоваться:
f?()
эквивалентно
f() if typeof f is 'function'
, что означает, что вы можете написать
success_message = msg?() ? msg
Thisработает, потому что msg?()
имеет значение undefined
, если msg
не является функцией.
Предупреждение: Это не удастся, если msg()
вернет null
, установив success_message
к функции msg
.
Действительно, если вы собираетесь делать это в своем приложении, вы должны написать служебную функцию:
toVal = (x) -> if typeof x is 'function' then x() else x
successMessage = toVal msg
Вы можете даже прикрепить toVal
к Object
прототипу, если вы чувствуете себя предприимчивым ..