根据另一个数组更新一个数组

时间:2014-10-05 00:47:13

标签: ruby arrays object

假设我有

a = ["a","b","c","d","e","f","g"]
b = a.map(&:upcase)
a.delete("a")

print b # right now b = ["A","B","C","D","E","F","G"]
        # I want    b = ["B","C","D","E","F","G"]

我希望b根据a的内容动态更新自己,以便最终b打印出"a",因为"a"a已从b移除。我希望a成为a的单独对象;我不想修改map!(无{{1}})。这可能吗?

1 个答案:

答案 0 :(得分:1)

TL; DR

您似乎想要一个与另一个数组共享成员的依赖数组,但以不同方式显示数组成员。您可以使用Ruby closure执行此操作。

使用" Stabby"创建一个闭包。 LAMBDA

提供具有不同行为的单个数据集的多个表示的方法不止一种。但是,定义自定义类可能对您的用例而言过度。我认为将lambda分配给 b 是实现目标的最简单方法,至少在处理 a b 作为单独但连接的对象。考虑:

a = %w[a b c d e f g]
b = ->{ a.map(&:upcase) }
a.delete ?a

b.call
#=> ["B", "C", "D", "E", "F", "G"]

a
#=> ["b", "c", "d", "e", "f", "g"]