「はじめてのPerl」ポチったの、今朝届くと思ってワクワクしてたのに明日だった
仕方ないからはてな教科書読んでみてる
環境は昨日構築した
Ubuntu上にperlbrewで5.18で……
Perlにもvirtualenvみたいなのあるのかな?
自力でクラス書く所で詰まった
引数(@_)から$selfとか取り出す時にカッコつけるの忘れちゃう
こんな感じに間違える↓
package Fibonacci; use strict; use warnings; sub new { my $class = @_; my $self = bless { n_now => 1, n_next => 1, }, $class; return $self; } sub reset { my $self = @_; ($self->{n_now}, $self->{n_next}) = (1,1); return $self; } sub next { my $self = @_; my $res = $self->{n_now}; ($self->{n_now}, $self->{n_next}) = ($self->{n_next}, $self->{n_now} + $self->{n_next}); return $res; } 1;
正しくはカッコつける。これってコンテキストを間違ってるって事なの
package Fibonacci; use strict; use warnings; sub new { my ($class) = @_; my $self = bless { n_now => 1, n_next => 1, }, $class; return $self; } sub reset { my ($self) = @_; ($self->{n_now}, $self->{n_next}) = (1,1); return $self; } sub next { my ($self) = @_; my $res = $self->{n_now}; ($self->{n_now}, $self->{n_next}) = ($self->{n_next}, $self->{n_now} + $self->{n_next}); return $res; } 1;
shift使ったほうがまだわかりやすい
package Fibonacci; use strict; use warnings; sub new { my $class = shift; my $self = bless { n_now => 1, n_next => 1, }, $class; return $self; } sub reset { my $self = shift; ($self->{n_now}, $self->{n_next}) = (1,1); return $self; } sub next { my $self = shift; my $res = $self->{n_now}; ($self->{n_now}, $self->{n_next}) = ($self->{n_next}, $self->{n_now} + $self->{n_next}); return $res; } 1;