&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 では動作しません。move_file(["foo.txt", "foo_20110915.txt"])Ruby 1.9 では、 の代わりに実行しようとしていますmove_file("foo.txt", "foo_20110915.txt")。
正しいアリティを持つように分割するにはどうすればよいですか?
私が知っている回避策:
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)}