我研究了高阶Perl书,并在第4.3.4章中讨论了迭代器问题.
代码:
main_script.pl
#!/perl
use strict;
use warnings;
use FindBin qw($Bin);
use lib $Bin;
use Iterator_Utils qw(:all);
use FlatDB;
my $db = FlatDB->new("$Bin/db.csv") or die "$!";
my $q = $db->query('STATE', 'NY');
while (my $rec = NEXTVAL($q) )
{
print $rec;
}
Run Code Online (Sandbox Code Playgroud)
Iterator_Utils.pm
#!/perl
use strict;
use warnings;
package Iterator_Utils;
use Exporter 'import';;
our @EXPORT_OK = qw(NEXTVAL Iterator
append imap igrep
iterate_function filehandle_iterator list_iterator);
our %EXPORT_TAGS = ('all' => \@EXPORT_OK);
sub NEXTVAL { $_[0]->() }
sub Iterator (&) { return $_[0] …Run Code Online (Sandbox Code Playgroud) 我和Moose迈出了第一步,我有以下问题.似乎我可以分配我未在模块中指定的属性.如果我尝试访问此属性,则会出现错误消息.我怎么能阻止模块中未指定的属性的赋值?在下面的例子中,我指定了年龄,虽然我没有在模块中指定它.除非我试着说,否则这是默默接受的.我想在 - >新语句之后出现错误消息.
代码:
#!/usr/bin/perl
use strict;
use warnings;
use 5.012;
package People;
use Moose;
use namespace::autoclean;
has 'name' => (is => 'rw');
__PACKAGE__->meta->make_immutable;
package main;
my $friend = People->new( name => 'Peter', age => 20 ); # no error.
say $friend->name;
say $friend->age; # here comes the error message.
Run Code Online (Sandbox Code Playgroud)
谢谢!
也许是一个愚蠢的问题,但我找不到答案.如果我用vcd包制作马赛克图,那么:
library(vcd)
test<-matrix(c(65,31,495,651), ncol=2,byrow=T)
colnames(test)<-c("2010", "2011")
rownames(test)<-c("yes", "now")
mosaic(test, shade=T, legend=T)
Run Code Online (Sandbox Code Playgroud)
它的作用就像一个魅力,除了多年来的标题和输出(是/否)显示为"A"和"B".
我想命名这些"年"和"输出",但我找不到这个参数.我怎么能这样做?提前致谢.
我使用以下两个简单的数据集:
(myData <- data.frame(ID=c(1:7, 5), Sum=c(10, 20, 30, 40, 50, 60, 700, 200)))
# ID Sum
# 1 1 10
# 2 2 20
# 3 3 30
# 4 4 40
# 5 5 50
# 6 6 60
# 7 7 700
# 8 5 200
Run Code Online (Sandbox Code Playgroud)
和
(myMap <- data.frame(ID=c(1:5, 7), Name=c("a", "b", "c", "d", "e", "g")))
# ID Name
# 1 1 a
# 2 2 b
# 3 3 c
# 4 4 d
# 5 …Run Code Online (Sandbox Code Playgroud)