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