面向对象编程中的公共,私有和受保护是什么?
我正在写一个看起来像这样的课程:
class ListenSocket is Tap {
has $!VMIO;
has Promise $.socket-host;
has Promise $.socket-port;
method new(&on-close, Mu :$VMIO, Promise :$socket-host, Promise :$socket-port) {
self.bless: :&on-close, :$VMIO, :$socket-host, :$socket-port;
}
submethod BUILD(Mu :$!VMIO) { }
}
Run Code Online (Sandbox Code Playgroud)
当我尝试构建类与定义的承诺$socket-host和$socket-port,其在类属性最终成为未定义无论出于何种原因.我该怎么做才能解决这个问题?
情况似乎是这样的:
class Foo { has $!bar }; say Foo.new( :3bar ).perl # OUTPUT: «Foo.new?»
Run Code Online (Sandbox Code Playgroud)
文档说它依赖于实现,但我想知道这是否真的有意义.