gpt4 book ai didi

raku - 我可以转发声明稍后定义的 Perl 6 类吗?

转载 作者:行者123 更新时间:2023-12-04 14:08:53 24 4
gpt4 key购买 nike

我可以在不插入名称的情况下转发声明一个我想稍后加载和使用的类吗?我正在尝试这样的事情:

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");

我以为我在一些核心类(class)中看到过这样的事情,但也许他们有额外的事情要做。

最佳答案

拆分问题:

  • 我可以转发声明一个类吗?

    但实现必须在同一个源文件中。
    (Rakudo 源文件在编译前加入同一个文件中)
    毕竟,它必须知道您声明的是哪个具有相同短名称的类。

    class Foo {...}
    class Foo {
    }
  • 一个类是否可以延迟加载而不必使用 ::('Digest::MD5')访问它?

    来自 require 的返回值是类(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");
  • 关于raku - 我可以转发声明稍后定义的 Perl 6 类吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48899025/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com