匿名子我是新来的Ruby和试图复制这个perl,它调用的匿名子,在红宝石:Perl的像红宝石
#!/usr/bin/perl
use strict;
use warnings;
use feature 'say';
# Make a reference to a subroutine
my $codes = {
one => sub {
say "This is code block one";
say "And this is code block one's line two"
},
};
for my $next_code (keys %{ $codes }) {
# Execute anonymous subroutine
&{ $codes->{ $next_code } };
}
我尝试这样做:
#!/usr/bin/ruby -w
codes = {
one: puts "This is code block one"
puts "And this is code block one's line two",
}
codes.each do |next_code|
next_code
end
但是,我得到语法错误。这是可能的,还是有另一种首选的红宝石方式?
更新:是的,这就像一个调度表。我将代码存储在一个散列中,稍后再运行该代码。
看起来你可能试图实现一个调度表。如果是这样,在你的问题中提到避免XY问题是很好的。在Ruby中可能有更好的方法,它采用与Perl完全不同的方法。 – ThisSuitIsBlackNot
你能用普通词(不是perl代码)解释你想做什么? –
'最好写成'$ code - > {$ next_code} - >()' – Borodin