例如,如果我有
def move_file(old_filename,new_filename) STDERR.puts "Moving #{old_filename.inspect} to #{new_filename.inspect}" # Implementation for careful moving goes hereendold_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”).
我如何将它展开,使它具有正确的arity?
@R_404_6120@我知道:
>使用def move_file(* arguments)替换def move_file(old_filename,new_filename)
>将每个(&方法(:move_file))替换为
每个{| old_filename,new_filename | move_file(old_filename,new_filename)}
each{|old_filename,new_filename| move_file(old_filename,new_filename)}
你应该能做到的
each{|pair| move_file(*pair)}
但我不知道你是如何推出无块变体的(我也需要它几次).我想& -shorthand是为了使语法更简单,并不意味着被阻塞太多(例如它是作为数组传递数组,还是splatted). 总结
以上是内存溢出为你收集整理的ruby – 我怎样才能使一个匿名对象分裂,以便我可以使用&方法呢?全部内容,希望文章能够帮你解决ruby – 我怎样才能使一个匿名对象分裂,以便我可以使用&方法呢?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)