导入模块时如何为导出的子设置命名参数?

问题描述 投票:0回答:1
unit module My::Show;

sub show (:$indent = False) is export {
    if $indent {
        say "    Showing with indentation.";
    } else {
        say "Showing without indentation.";
    }
}

导入此代码时,我想指定以下三个中的任何一个:

use My::Show :indent;
use My::Show :!indent;
use My::Show;

如何做到这一点?

module export raku
1个回答
0
投票

如果我对你的问题的评论中的猜测是错误的,那么这个答案可能对你来说毫无用处。如果我是对的,那么希望对您有用。

我认为你需要写一个自定义的sub EXPORT


例如:

# main.raku use lib '.'; use My::Show [:indent],; show; # My/Show.rakumod sub EXPORT (@ (:indent($default-indent) = False)) { sub show (:$indent = $default-indent) is export { say $indent } Map.new: '&show' => &EXPORT::DEFAULT::show } unit module My::Show;
关于这个答案有相当多的内容需要解开和讨论,但我太累了,无法做好,如果我的猜测是错误的,那么无论如何这都是没有意义的,如果我的猜测是正确的,那么也许文档就足够了,所以我将发布今晚的内容,并尝试明天再回来。

© www.soinside.com 2019 - 2024. All rights reserved.