所以我熟悉Perl中的字段pragma,可以用来限制存储在类中的字段:
package Fruit;
use fields qw( color shape taste );
sub new {
my ( $class, $params ) = @_;
my $self = fields::new( $class ) unless ref $class;
foreach my $name ( keys %$params ) {
$self->{ $name } = $params->{ $name };
}
return $self;
}
Run Code Online (Sandbox Code Playgroud)
一旦我在顶部声明了字段,我怎么能回到列表,说因为我想动态生成访问器?是keys %FIELDS
唯一的方法吗?
其次,是否有一种更有效的方法来预先填充构造函数中的字段,而不是像上面那样循环并分配每个参数?
假设我有一个hashref常量,如下所示:
use constant DOGS => {
Lassie => 'collie',
Benji => 'mutt',
Scooby => 'great dane',
Goofy => '???'
};
Run Code Online (Sandbox Code Playgroud)
我怎样才能正确地取消引用它来说出来......它们的关键是什么?
warn ref DOGS; # HASH at untitled line 12.
warn keys( %{DOGS} ); # Warning: something's wrong (empty list)
warn keys( DOGS ); # Type of arg 1 to keys must be hash (not constant item)
Run Code Online (Sandbox Code Playgroud)
以下是我能够使它工作的唯一方法:
my $dogs = DOGS;
warn keys( %$dogs ); # LassieBenjiGoofyScooby at untitled line 15.
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
我正在研究使用EventMachine驱动的twitter-stream rubygem来跟踪和捕获推文.我对整个编程事物都很陌生.如何判断我在事件循环中正在进行的处理是否会导致我落后?有一种简单的方法可以检查吗?
我在JRuby下使用ruby-mysql库并获得以下警告:
/mysql/protocol.rb:530 warning: GC.disable does nothing on JRuby
有没有办法让JRuby停止抱怨这个?