【发布时间】:2014-12-03 13:54:47
【问题描述】:
除了这些示例之外,我正在努力寻找任何好的咖啡脚本和模式匹配示例:
{x, y} = sprite
css = {opacity, fontFamily}
我在 Erlang 中使用过模式匹配,但我很难在 coffeescript 中找到一些更高级的示例,这些示例准确地说明了可能的情况。
【问题讨论】:
标签: coffeescript
除了这些示例之外,我正在努力寻找任何好的咖啡脚本和模式匹配示例:
{x, y} = sprite
css = {opacity, fontFamily}
我在 Erlang 中使用过模式匹配,但我很难在 coffeescript 中找到一些更高级的示例,这些示例准确地说明了可能的情况。
【问题讨论】:
标签: coffeescript
啊,我以为我认出了这些例子: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。
【讨论】:
有一个库提供了一种无需预编译就可以直接在咖啡脚本中编写类似 Erlang 的结构的方法,只需将其包装在特殊功能中即可。你可以在这里找到它:https://github.com/nogizhopaboroda/f_context。
【讨论】: