【问题标题】:Coffeescript run function or read variableCoffeescript 运行函数或读取变量
【发布时间】:2012-01-07 04:18:26
【问题描述】:

说我有一个

msg = "Saved Successfully"

或

msg = -> "Saved #{@course.title} Successfully"

有没有办法优雅地获取 msg 的值而不知道它是函数还是常规变量而不是做

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

【问题讨论】:

    标签: coffeescript


    【解决方案1】:

    您可以利用 CoffeeScript 速记:

    f?()
    

    等价于

    f() if typeof f is 'function'
    

    这意味着你可以写

    success_message = msg?() ? msg
    

    这是因为如果msg 不是函数,msg?() 的值是 undefined。

    警告:如果msg() 返回null,将success_message 设置为msg 函数,这将失败。

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

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

    如果您喜欢冒险,您甚至可以将 toVal 附加到 Object 原型上。..

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多