【问题标题】:Pattern Matching in coffeescript咖啡脚本中的模式匹配
【发布时间】:2014-12-03 13:54:47
【问题描述】:

除了这些示例之外,我正在努力寻找任何好的咖啡脚本和模式匹配示例:

{x, y} = sprite
css = {opacity, fontFamily}

我在 Erlang 中使用过模式匹配,但我很难在 coffeescript 中找到一些更高级的示例,这些示例准确地说明了可能的情况。

【问题讨论】:

    标签: coffeescript


    【解决方案1】:

    啊,我以为我认出了这些例子:http://pragprog.com/magazines/2011-05/a-coffeescript-intervention :)

    CoffeeScript 的模式匹配(更正式地称为“解构赋值”,以区别于 Erland 和 Scala 中的模式匹配,这是完全不同的)可用于从非常复杂的数据结构中提取信息.这是来自official docs 的示例:

    {poet: {name, address: [street, city]}} = futurists
    

    本质上等价于

    poet = futurists.poet
    name = poet.name
    street = poet.address[0]
    city = poet.address[1]
    

    但实际上,解构赋值主要用于获取一个或两个对象属性,如您提到的示例中所示,或者用于从数组中获取部分。例如,您可以通过编写交换两个变量 ab 的值

    [a, b] = [b, a]
    

    并且,使用 splats,您可以通过写入获取数组 arr 的第一个和最后一个值

    [first, middle..., last] = arr
    

    我希望这会有所帮助。我的书中当然还有更多的例子,CoffeeScript: Accelerated JavaScript Development

    【讨论】:

      【解决方案2】:

      有一个库提供了一种无需预编译就可以直接在咖啡脚本中编写类似 Erlang 的结构的方法,只需将其包装在特殊功能中即可。你可以在这里找到它:https://github.com/nogizhopaboroda/f_context

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-07-26
        • 2013-01-09
        • 1970-01-01
        • 2012-08-26
        • 2012-10-12
        • 1970-01-01
        • 2011-11-08
        • 2011-06-30
        相关资源
        最近更新 更多