将方法应用于多个对象
Applying a method to multiple objects
test "pass this test" do
@item_one.change
@item_two.change
@item_one.reload
@item_two.reload
assert @item_one.changed?
assert @item_two.changed?
end
我试图把它弄干
test "pass this test" do
(@item_one, @item_two).change
(@item_one, @item_two).reload
assert (@item_one, @item_two).changed?
end
显然行不通,因为我们将在数组上调用该方法。同时,一个循环对于 2 个对象来说似乎太乏味了。
我在找什么?
我认为你想要的并不存在。我能想到的最接近的是
[@item_one, @item_two].map {|x| x.change }
这个怎么样?
test "pass this test" do
[@item_one, @item_two].each(&:change)
[@item_one, @item_two].each(&:reload)
assert [@item_one, @item_two].map(&:changed?).all?
end
each(&:...)
是 each do ... end
的快捷方式
map(&:...)
是 map do ... end
.
的快捷方式
test "pass this test" do
@item_one.change
@item_two.change
@item_one.reload
@item_two.reload
assert @item_one.changed?
assert @item_two.changed?
end
我试图把它弄干
test "pass this test" do
(@item_one, @item_two).change
(@item_one, @item_two).reload
assert (@item_one, @item_two).changed?
end
显然行不通,因为我们将在数组上调用该方法。同时,一个循环对于 2 个对象来说似乎太乏味了。
我在找什么?
我认为你想要的并不存在。我能想到的最接近的是
[@item_one, @item_two].map {|x| x.change }
这个怎么样?
test "pass this test" do
[@item_one, @item_two].each(&:change)
[@item_one, @item_two].each(&:reload)
assert [@item_one, @item_two].map(&:changed?).all?
end
each(&:...)
是 each do ... end
的快捷方式
map(&:...)
是 map do ... end
.