&method(:method_name)
当. 需要多个对象时,我想使用这个成语method_name
。我可以在 Ruby 1.9 下执行此操作吗?
例如,如果我有
def move_file(old_filename, new_filename)
STDERR.puts "Moving #{old_filename.inspect} to #{new_filename.inspect}"
# Implementation for careful moving goes here
end
old_filenames = ["foo.txt", "bar.txt", "hoge.ja.txt"]
new_filenames = ["foo_20110915.txt", "bar_20110915.txt", "hoge_20110915.ja.txt"]
编码
old_filenames.zip(new_filenames).each(&method(:move_file))
在 Ruby 1.8 下工作,但不能在 Ruby 1.9 下工作。在 Ruby 1.9 下,它试图move_file(["foo.txt", "foo_20110915.txt"])
代替move_file("foo.txt", "foo_20110915.txt")
.
我如何对其进行 splattify 以使其具有正确的数量?
我知道的解决方法:
- 替换
def move_file(old_filename, new_filename)
为def move_file(*arguments)
- 替换
each(&method(:move_file))
为
each{|old_filename, new_filename| move_file(old_filename, new_filename)}