CoffeeScript:为对象指定值
假设我有以下目标:CoffeeScript:为对象指定值,coffeescript,Coffeescript,假设我有以下目标: dict = { a: 1, b: 2, c: 3 } 以下几点效果很好: {a, b} = dict // -> a = 1 // -> b = 2 现在我想操纵这些数字,并将其写回对象,显然下面这行行不通: // some manipulations dict = {a, b} 显然,我已经覆盖了dict对象。我基本上想做的是分配dict.a=a和dict.b=b,使dict.c保持原样 是否可以用某种简短的符号来实现我的目标?假设您使用的是下划线.js
dict = { a: 1, b: 2, c: 3 }
以下几点效果很好:
{a, b} = dict
// -> a = 1
// -> b = 2
现在我想操纵这些数字,并将其写回对象,显然下面这行行不通:
// some manipulations
dict = {a, b}
显然,我已经覆盖了dict
对象。我基本上想做的是分配dict.a=a
和dict.b=b
,使dict.c
保持原样
是否可以用某种简短的符号来实现我的目标?假设您使用的是下划线.js,我会这样做:
dict = { a: 1, b: 2, c: 3 }
{a, b} = dict
...
dict = _.extend dict, {a:a, b:b}
正如asawyer指出的,jQuery中也有一个类似的扩展函数。假设您使用的是下划线.js,我会这样做:
dict = { a: 1, b: 2, c: 3 }
{a, b} = dict
...
dict = _.extend dict, {a:a, b:b}
正如asawyer指出的,jQuery中也有类似的扩展函数。在纯咖啡脚本中:
extend = (a, others...) ->
for o in others
a[key] = val for key, val of o
a
dict = { a: 1, b: 2, c: 3 }
{a, b} = dict
a = 5
b = 8
extend dict, {a, b}
console.log dict
#dict = { a: 5, b: 8, c: 3 }
纯咖啡脚本:
extend = (a, others...) ->
for o in others
a[key] = val for key, val of o
a
dict = { a: 1, b: 2, c: 3 }
{a, b} = dict
a = 5
b = 8
extend dict, {a, b}
console.log dict
#dict = { a: 5, b: 8, c: 3 }
可以使用以下方法将对象的切片提取到单独的局部变量中:
{a, b} = dict
但是,无法指定对象的某个切片,即,您不能执行以下操作:
dict{a, b} = [ x, y ]
obj = dict{a, b}
作为一条捷径
dict.a = x
dict.b = y
您甚至无法使用以下内容将对象切片提取到新对象中:
dict{a, b} = [ x, y ]
obj = dict{a, b}
您必须分两步进行:
{ a, b } = dict
obj = { a, b }
可以很好地从对象中提取内容,但在将内容放回对象中时没有那么大的用处。我认为最接近的方法是使用非结构化数组分配:
[ dict.a, dict.b ] = [ a, b ]
如果使用多个键,则可以将这些键放入一个数组中,并使用循环进行切片和合并(可能使用helper函数包装):
或者只使用下划线jQuery。。。实用函数。您可以使用以下方法将对象的一部分提取到单独的局部变量中:
{a, b} = dict
但是,无法指定对象的某个切片,即,您不能执行以下操作:
dict{a, b} = [ x, y ]
obj = dict{a, b}
作为一条捷径
dict.a = x
dict.b = y
您甚至无法使用以下内容将对象切片提取到新对象中:
dict{a, b} = [ x, y ]
obj = dict{a, b}
您必须分两步进行:
{ a, b } = dict
obj = { a, b }
可以很好地从对象中提取内容,但在将内容放回对象中时没有那么大的用处。我认为最接近的方法是使用非结构化数组分配:
[ dict.a, dict.b ] = [ a, b ]
如果使用多个键,则可以将这些键放入一个数组中,并使用循环进行切片和合并(可能使用helper函数包装):
或者只使用下划线jQuery。。。实用程序函数。使用
extend(…)
样式函数,如下所示:使用extend(…)
样式函数,如下所示:。
修改其第一个参数,因此您不需要赋值。或者更好的是:。另外,.extend
将修改dict
对象本身,因此无需重新分配它:)(编辑:似乎mu比我还短,呵呵)考虑到我没有使用任何框架,也没有编写任何帮助函数,我原来问题的简短答案是否定的?@Amberlamps:我认为简短答案是否定的,冗长的漫无边际的答案在下面(或上面,取决于投票)。\uExtend
修改了它的第一个参数,所以你不需要赋值。或者更好的是:。另外,.extend
将修改dict
对象本身,因此无需重新分配它:)(编辑:似乎mu比我还短,呵呵)考虑到我没有使用任何框架,也没有编写任何帮助函数,我原来问题的简短答案是否定的?@Amberlamps:我认为简短答案是否定的,冗长的漫无边际的答案在下面(或上面,取决于投票)。考虑到我没有使用任何框架,也没有参与编写任何帮助函数,我原来问题的简短答案是否定的?可能,我不知道没有声明函数的其他方法。考虑到我没有使用任何框架,也没有参与编写任何帮助函数,我原始问题的简短答案是“否”?可能,我不知道没有声明函数的其他方法。