Python ve Java'da, kod boyunca tam nitelikli paket/modül adlarının tekrarını ortadan kaldırmak için import
'a sahibiz. Perl/Moose'da herhangi bir eşdeğer var mı? MyApp::Model::Item
'u tekrarlamak zorunda kalmazsak Moose'u daha güzel kullanacağını düşünüyorum. Bunun yerine, [somehow declare] MyApp::Model::Item;
ve daha sonrası için Item
'a başvurmak istiyorum. Birlikte, MooseX::Method::Signatures
Perl/Moose paket isimlerine başvurmak için kestirme mi?
$var->isa('Item');
try { ... } catch (DatabaseError $e) { ... }
ile, ... sınıf isimleri kullanılan bu kullanım senaryoları tüm
Item->new(name => 'thing');
method foo(Item $xyz) { ... }
extends 'Item';
with 'ItemRole';
düşünebilirizTryCatch
$Item::SOME_PACKAGE_GLOBAL_VARIABLE
Henüz böyle bir şey yoksa, bunu nasıl temizlemeye başlayabileceğime dair bir fikrim var mı? Sınıf isminin bir dize olarak kullanıldığı durumlarla başa çıkmanın zor olacağını görebiliyorum. Böyle bir şey ihtiyacı
$Item::SOME_PACKAGE_GLOBAL_VAR
oldukça nadir gibi görünüyor, ama namespace::alias
ile çalışmak için yapılmış olabilir varsayalım: aliased
use aliased 'MyApp::Model::Item';
use aliased 'MyApp::ItemRole';
use aliased 'MyApp::Exception::DatabaseError';
extends Item;
with ItemRole;
Item->new(name => 'thing');
method foo (Item $xyz) { ... }
$var->isa(Item);
try { ... } catch(DatabaseError $e) { ... }
ile
Fantastik! Hızlı cevap için teşekkürler! – PBJ
ve evet, nadiren küresel bir pakete erişmem gerekiyor, bu yüzden bu durumlarda adı yazımla yaşayabilirim. – PBJ