我可以转发声明一个我稍后定义的 Perl 6 class 吗?
Can I forward declare a Perl 6 class I'll define later?
我可以转发声明一个我想稍后加载和使用的 class 而不插入其名称吗?我正在尝试这样的事情:
my class Digest::MD5 {};
require ::('Digest::MD5');
put Digest::MD.new.md5_hex("My awesome data to hash");
我知道我可以通过插值来做到这一点,但我希望跳过这一步:
require ::('Digest::MD5');
put ::('Digest::MD5').new.md5_hex("My awesome data to hash");
我以为我在一些核心 classes 中看到过类似的东西,但也许他们还有额外的东西在进行。
拆分问题:
我可以转发声明一个class吗?
是但是实现必须在同一个源文件中。
(Rakudo 源文件在编译前合并为同一个文件)
毕竟,它必须知道您声明的 class 和 short-name 相同。
class Foo {...}
class Foo {
}
可以延迟加载 class 而不必使用 ::('Digest::MD5')
访问它吗?
是 require
的 return 值是 class
put (require Digest::MD5).new.md5_hex("My awesome data to hash");
或者你可以使用这个:
sub term:<Digest::MD5> () { once require Digest::MD5 }
put Digest::MD5.new.md5_hex("My awesome data to hash");
我可以转发声明一个我想稍后加载和使用的 class 而不插入其名称吗?我正在尝试这样的事情:
my class Digest::MD5 {};
require ::('Digest::MD5');
put Digest::MD.new.md5_hex("My awesome data to hash");
我知道我可以通过插值来做到这一点,但我希望跳过这一步:
require ::('Digest::MD5');
put ::('Digest::MD5').new.md5_hex("My awesome data to hash");
我以为我在一些核心 classes 中看到过类似的东西,但也许他们还有额外的东西在进行。
拆分问题:
我可以转发声明一个class吗?
是但是实现必须在同一个源文件中。
(Rakudo 源文件在编译前合并为同一个文件)
毕竟,它必须知道您声明的 class 和 short-name 相同。class Foo {...} class Foo { }
可以延迟加载 class 而不必使用
::('Digest::MD5')
访问它吗?是
require
的 return 值是 classput (require Digest::MD5).new.md5_hex("My awesome data to hash");
或者你可以使用这个:
sub term:<Digest::MD5> () { once require Digest::MD5 } put Digest::MD5.new.md5_hex("My awesome data to hash");