ruby – 我怎样才能使一个匿名对象分裂,以便我可以使用&方法呢?

ruby – 我怎样才能使一个匿名对象分裂,以便我可以使用&方法呢?,第1张

概述当method_name需要多个对象时,我想使用&方法(:method_name)习惯用法.我可以在 Ruby 1.9下这样做吗? 例如,如果我有 def move_file(old_filename, new_filename) STDERR.puts "Moving #{old_filename.inspect} to #{new_filename.inspect}" # Implem 当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 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)}

@R_404_6120@ 代替

each{|old_filename,new_filename| move_file(old_filename,new_filename)}

你应该能做到的

each{|pair| move_file(*pair)}

但我不知道你是如何推出无块变体的(我也需要它几次).我想& -shorthand是为了使语法更简单,并不意味着被阻塞太多(例如它是作为数组传递数组,还是splatted). 总结

以上是内存溢出为你收集整理的ruby – 我怎样才能使一个匿名对象分裂,以便我可以使用&方法呢?全部内容,希望文章能够帮你解决ruby – 我怎样才能使一个匿名对象分裂,以便我可以使用&方法呢?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1266429.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存