我从 Perl 的文档中举了一个例子:
https://perldoc.perl.org/blead/perlclass
并尝试执行以下脚本:
use v5.36;
use feature 'class';
class My::Example 1.234 {
field $x;
ADJUST {
$x = "Hello, world";
}
method print_message {
say $x;
}
}
My::Example->new->print_message;
Run Code Online (Sandbox Code Playgroud)
但我收到此错误:
Feature "class" is not supported by Perl 5.36.0 at /home/con/Scripts/class.pl line 4.
BEGIN failed--compilation aborted at /home/con/Scripts/class.pl line 4.
Command exited with non-zero status 255
Run Code Online (Sandbox Code Playgroud)
我完全从手册中复制了脚本,但该脚本不起作用。
这是一个错误,还是我做错了什么?
尽管use v5.36;在该示例中使用了 ,但class直到 Perl v5.37.9 才引入该关键字。但那是一个不稳定的 Perl 版本。
预计(“预期”,我的意思是“几乎已成定局”)Perl v5.38 将成为第一个支持该class关键字的 Perl 稳定版本。这可能会在未来几周内发布。不过,该class关键字是实验性的,因此如果您想在没有警告的情况下使用它,则需要将其包含在文件顶部:
use v5.38;
use experimental 'class';
Run Code Online (Sandbox Code Playgroud)
同时,您应该研究Object::Pad,它是此功能的原型实现,并将在旧版本的 Perl 上运行。
还有一个名为Feature::Compat::Class 的模块,它将加载 Perl 的本机class支持或 Object::Pad,具体取决于哪个可用。
| 归档时间: |
|
| 查看次数: |
138 次 |
| 最近记录: |