除了这些例子之外,我正在努力寻找任何好的咖啡和模式匹配的例子:
{x, y} = sprite
css = {opacity, fontFamily}
我在Erlang中使用过模式匹配,但我正在努力寻找coffeescript中的一些更高级的例子,这些例子说明了可能的内容。
答案 0 :(得分:19)
啊,我以为我认出了这些例子: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]
但实际上,解构赋值主要用于抓取一个或两个对象属性,如您提到的示例,或者用于从数组中获取零件。例如,您可以通过编写
来交换两个变量a
和b
的值
[a, b] = [b, a]
并且,使用splats,您可以通过编写
来获取数组arr
的第一个和最后一个值
[first, middle..., last] = arr
我希望有所帮助。我的书CoffeeScript: Accelerated JavaScript Development当然有更多的例子。
答案 1 :(得分:2)
有一个库提供了一种在没有预编译的情况下在coffeescript中编写类似Erlang的结构的方法,只需将其包装在特殊函数中。你可以在这里找到它:https://github.com/nogizhopaboroda/f_context。