数组中如何使用运算符进行元素操作?

更新于
2026-10-09 19:21:39
1阅读来源:SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计539个文字,预计阅读时间需要3分钟。

数组中如何使用运算符进行元素操作?

基于Symbol,我们可以创建一个不可变的数据结构,它允许我们存储任意类型的数据,并且可以保证数据的唯一性和不可变性。Symbol作为JavaScript中的原始数据类型,可以用来作为对象的属性名,确保每个属性名都是唯一的。下面是一个简单的示例:

javascript// 创建一个Symbollet uniqueKey=Symbol('uniqueKey');

// 使用Symbol作为对象的属性名let myObject={ [uniqueKey]: 'This is a unique value'};

// 输出对象,验证Symbol的使用console.log(myObject[uniqueKey]); // 输出: This is a unique value

数组中如何使用运算符进行元素操作?

基于 Symbol#to_proc实现,有一种众所周知的速记形式将块传递给任何方法.

代替:

[1,2,3].reduce(0) { |memo, e| memo + e } # or [1,2,3].reduce { |memo, e| memo.+(e) }

有人可能写道:

[1,2,3].reduce &:+

以上是后者“标准符号”的确切“同义词”.

现在让我们有两个数组:

a = [[1,"a"],[2,"b"]] b = [[3,"c"],[4,"d"]]

两者都有

b.reduce(a) { |memo, e| memo << e } # and b.reduce(a) { |memo, e| memo.<<(e) }

将正确更新数组inplace,就像a.concat(b)一样:

#⇒ [[1,"a"], [2,"b"], [3,"c"], [4,"d"]]

如果突然引发异常,则为短符号:

b.reduce(a) &:<< #⇒TypeError: [[1, "a"], [2, "b"]] is not a symbol

我错过了什么? Ruby 2.1.

附:铸造于this question.

b.reduce(a) &:<<

将无法正常工作,因为它不是有效的方法调用.相反,将符号作为最后一个参数传递:

b.reduce(a, &:<<) # => [[1, "a"], [2, "b"], [3, "c"], [4, "d"]]

你打电话的时候:

[1,2,3].reduce &:+

&:是该方法的参数.它实际上相当于:

[1,2,3].reduce(&:+)

如果方法的最后一个参数前面是&,那么它被认为是Proc对象(符号到Proc技巧).然后将其从参数列表中删除,并转换为块,然后该方法关联该块.

标签:reduce

本文共计539个文字,预计阅读时间需要3分钟。

数组中如何使用运算符进行元素操作?

基于Symbol,我们可以创建一个不可变的数据结构,它允许我们存储任意类型的数据,并且可以保证数据的唯一性和不可变性。Symbol作为JavaScript中的原始数据类型,可以用来作为对象的属性名,确保每个属性名都是唯一的。下面是一个简单的示例:

javascript// 创建一个Symbollet uniqueKey=Symbol('uniqueKey');

// 使用Symbol作为对象的属性名let myObject={ [uniqueKey]: 'This is a unique value'};

// 输出对象,验证Symbol的使用console.log(myObject[uniqueKey]); // 输出: This is a unique value

数组中如何使用运算符进行元素操作?

基于 Symbol#to_proc实现,有一种众所周知的速记形式将块传递给任何方法.

代替:

[1,2,3].reduce(0) { |memo, e| memo + e } # or [1,2,3].reduce { |memo, e| memo.+(e) }

有人可能写道:

[1,2,3].reduce &:+

以上是后者“标准符号”的确切“同义词”.

现在让我们有两个数组:

a = [[1,"a"],[2,"b"]] b = [[3,"c"],[4,"d"]]

两者都有

b.reduce(a) { |memo, e| memo << e } # and b.reduce(a) { |memo, e| memo.<<(e) }

将正确更新数组inplace,就像a.concat(b)一样:

#⇒ [[1,"a"], [2,"b"], [3,"c"], [4,"d"]]

如果突然引发异常,则为短符号:

b.reduce(a) &:<< #⇒TypeError: [[1, "a"], [2, "b"]] is not a symbol

我错过了什么? Ruby 2.1.

附:铸造于this question.

b.reduce(a) &:<<

将无法正常工作,因为它不是有效的方法调用.相反,将符号作为最后一个参数传递:

b.reduce(a, &:<<) # => [[1, "a"], [2, "b"], [3, "c"], [4, "d"]]

你打电话的时候:

[1,2,3].reduce &:+

&:是该方法的参数.它实际上相当于:

[1,2,3].reduce(&:+)

如果方法的最后一个参数前面是&,那么它被认为是Proc对象(符号到Proc技巧).然后将其从参数列表中删除,并转换为块,然后该方法关联该块.

标签:reduce