Coffeescript运行函数或读取变量

Coffeescript运行函数或读取变量,coffeescript,Coffeescript,说我有 msg = "Saved Successfully" 或 有没有什么方法可以优雅地获取msg的值,而不知道它是函数还是正则变量,而不是 success_message = if typeof msg is 'function' then msg() else msg 有一个咖啡脚本速记,你可以利用: f?() 相当于 f() if typeof f is 'function' 这意味着你可以写作 success_message = msg?() ? msg 这是因为如果msg不

说我有

msg = "Saved Successfully"

有没有什么方法可以优雅地获取msg的值,而不知道它是函数还是正则变量,而不是

success_message = if typeof msg is 'function' then msg() else msg

有一个咖啡脚本速记,你可以利用:

f?()
相当于

f() if typeof f is 'function'
这意味着你可以写作

success_message = msg?() ? msg
这是因为如果
msg
不是函数,则
msg?()
具有值
undefined

警告:如果
msg()
返回
null
,将
success\u消息设置为
msg
函数,则此操作将失败

实际上,如果要在应用程序中执行此操作,应该编写一个实用函数:

toVal = (x) -> if typeof x is 'function' then x() else x
successMessage = toVal msg
如果你喜欢冒险,你甚至可以将
toVal
附加到
对象
原型上

toVal = (x) -> if typeof x is 'function' then x() else x
successMessage = toVal msg