您可以使用EVALFILE
(有一些警告)
库/example.pm6
say (^256).pick.fmt('%02X')
Run Code Online (Sandbox Code Playgroud)
复制代码
> EVALFILE('lib/example.pm6'); # rather than `use lib 'lib'; use example;`
DE
> EVALFILE('lib/example.pm6');
6F
Run Code Online (Sandbox Code Playgroud)
当您尝试使用命名空间时就会出现问题。
库/example.pm6
class Foo {
say (^256).pick.fmt('%02X')
}
Run Code Online (Sandbox Code Playgroud)
复制代码
> EVALFILE('lib/example.pm6')
C0
> EVALFILE('lib/example.pm6')
===SORRY!=== Error while compiling /home/brad/EVAL_2
Redeclaration of symbol 'Foo'
at /home/brad/EVAL_2:1
------> class Foo? {
expecting any of:
generic role
Run Code Online (Sandbox Code Playgroud)
如果您:ver在每次加载之间更改名称的一部分,这仍然不起作用。
库/example.pm6
class Foo:ver(0.001) {
say (^256).pick.fmt('%02X')
}
Run Code Online (Sandbox Code Playgroud)
如果您只是在尝试,解决此问题的一种方法是使它们具有词汇性而不是全局性。
库/example.pm6
my class Foo { # default is `our`
say (^256).pick.fmt('%02X')
}
Run Code Online (Sandbox Code Playgroud)
复制代码
> EVALFILE('lib/test.pm6')
DD
> EVALFILE('lib/test.pm6')
88
> EVALFILE('lib/test.pm6')
6E
Run Code Online (Sandbox Code Playgroud)
它有一个单独的词法范围:
> Foo
===SORRY!=== Error while compiling:
Undeclared name:
Foo used at line 1
Run Code Online (Sandbox Code Playgroud)
所以你会想要别名它:
> my \Foo = EVALFILE('lib/test.pm6'); # store a ref to it in THIS lexical scope
0C
> Foo
(Foo)
> my \Foo = EVALFILE('lib/test.pm6'); # still works the second time
F7
Run Code Online (Sandbox Code Playgroud)
这当然有效,因为类定义是该范围内的最后一条语句。
如果您深入研究 Rakudo 的结构,可能有一种方法可以导致类似于 Perl 5 中的重新加载,但据我所知,这不是语言的一部分。
che*_*nyf -2
与 Python 的 import 一样,您可以使用use关键字:
> perl6
To exit type 'exit' or '^D'
> use Cro::HTTP::Client
Nil
> my $resp = await Cro::HTTP::Client.get('https://www.perl6.org/');
Cro::HTTP::Response.new(request => Cro::HTTP::Request, status => 200, body-parser-selector => Cro::HTTP::BodyParserSelector::ResponseDefault, body-serializer-selector => Cro::HTTP::BodySerializerSelector::ResponseDefault, http-version => "1.1", http2-stream-id => Int)
> say await $resp.body
Run Code Online (Sandbox Code Playgroud)
有关更多信息,https://docs.perl6.org/language/modules#Exporting_and_selective_importing可能会有所帮助。
| 归档时间: |
|
| 查看次数: |
166 次 |
| 最近记录: |