代码之家  ›  专栏  ›  技术社区  ›  daxim Fayland Lam

如何只从“perl6::controls”导入“for”?

  •  7
  • daxim Fayland Lam  · 技术社区  · 6 年前

    测试用例:

    use 5.026;
    use Perl6::Controls qw(for);
    
    for (1..10) -> $n {
        say $n;
    }
    
    loop {};
    

    期待:

    没有包或对象引用,无法调用方法“loop”

    得到了:

    无限循环

    2 回复  |  直到 6 年前
        1
  •  5
  •   mob    6 年前
    use Perl6::Controls qw(for);
    BEGIN {
        delete $^H{'Keyword::Simple/keywords'}{"loop"};
    }
    ...
    

    我偶然发现你的剧本 B::Deparse .


    要选择和选择你想要保留的关键字,你可以说

    use Perl6::Controls;
    BEGIN {
        my @keep = ...;    # e.g.  @keep = qw(for);
        my %keywords;
        @keywords{@keep} = @{$^H{'Keyword::Simple/keywords'}}{@keep};
        $^H{'Keyword::Simple/keywords'} = \%keywords;
    }
    
        2
  •  1
  •   JGNI    6 年前

    不能。请查看的源代码 Perl6::Controls 它使用自己的导入方法定义所有新关键字 Keyword::Declare . 它忽略在使用行上传递的任何参数。