Moose::Autoboxl也能实现Ruby迭代器的功能

今天在网上看到Moose::Autobox可以实现Ruby迭代器的功能,感觉挺有意思的。
Ruby的迭代器:5.times { |each| ... }在perl中可以这样实现:
  1. use Moose::Autobox;

  2. sub Moose::Autobox::SCALAR::times {
  3.     my($count, $block) = @_;
  4.     1->to($count)->each_key($block);
  5. }

  6. 5->times(sub {$_->say});
复制代码
另map、grep还能以oo形式来使用:
  1. use Moose::Autobox;
  2. print "Squares: " . [ 1 .. 10 ]->map(sub { $_ * $_ })->join(', '),"\n";
  3. print ["apple", "orange", "banana", "watermelon"]->grep(sub{/an/})->join("\n");
复制代码

作者: aef25u   发布时间: 2011-05-22

挺有意思:

作者: rubyish   发布时间: 2011-05-22