匿名子我是新來的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