トップページ > プログラム > 2015年10月25日 > +VcrnbUt

書き込み順位&時間帯一覧

27 位/167 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000000000000000002002



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
Perlについての質問箱 64箱目 [転載禁止]©2ch.net

書き込みレス一覧

Perlについての質問箱 64箱目 [転載禁止]©2ch.net
571 :デフォルトの名無しさん[sage]:2015/10/25(日) 21:16:54.27 ID:+VcrnbUt
オブジェクト指向の書き方と言うか使い方がいまいちよくわからんのだけど、
なんかいろいろあるんだけど、

use strict;
{
package obj;
sub new {
my $class = shift;
return bless { NAME => 'hoge', }, $class;
}
sub method{
my $self = shift;
}

}

package main;
my $instance = obj->new();
print $instance->{NAME} . "\n"; #1: 普通にアクセス出来ますが…? カプセル化とはいったい…?
obj::new(); #2: 使用側の呼び出しによってクラス名が自動送信されたりされなかったりする。オブジェクトかどうかは「呼び出し側が」決めるの? どうにかしてくれ
my $instance2 = obj->method(); #3: コンストラクタなのか通常のメソッドなのか区別が付かない。誤った使用法が普通に発生出来る。なんとかしてくれ。


ちょっとだけperldocだかを見てきたけど、なんでも自由にアクセス出来るのが売りだみたいなことを自慢げ(?)に書いてあった。
いやそれオブジェクト指向じゃねぇから。対策教えてくれ。
使用者がモジュールごとの仕様を熟知して地雷をよけながら歩くのがデフォルトかよ
Perlについての質問箱 64箱目 [転載禁止]©2ch.net
572 :デフォルトの名無しさん[sage]:2015/10/25(日) 21:18:06.36 ID:+VcrnbUt
質問その2
呼び出し側で
my $instance1 = obj->new1(); #普通のインスタンス
my $instance2 = $instance1->new2(); #インスタンス1から発生するインスタンス2

みたいに書きたいんだけど、どうすりゃいいだろう?
呼び出しは出来ればこの書式をこのまま使いたい。
new2内部でクラス名を得られない。なのでblessできない。



質問その3
今の所あんま重要じゃないんだけど、
Perlのオブジェクト指向ってシンボリックリファレンスとかgotoとかと同じたぐいに見えるんだけど合ってる?
packageがラベル名やgotoと同じたぐいに感じるのだけど。



また何かあったら質問します。
よろしく


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。