【问题标题】:perl6 - assignment to parameterperl6 - 分配给参数
【发布时间】:2018-03-18 21:38:31
【问题描述】:

有没有办法对形式参数进行赋值?

类似:

sub myfunc($n) {
    $n = $n + 5;
    return $n;
}

或者,我是否必须创建一个新变量并将 $n 的值分配给它?

【问题讨论】:

    标签: parameters subroutine raku


    【解决方案1】:

    您可以在参数上使用is copy trait:

    sub myfunc($n is copy) {
        $n = $n + 5;
        return $n;
    }
    

    更多信息请参见https://docs.raku.org/type/Signature#index-entry-trait_is_copy

    【讨论】:

      【解决方案2】:

      作为mentioned by Elizabeth Mattijsen,您可能想使用is copy

      但是,如果您确实打算改变用作该函数参数的变量,则可以使用 is rw 特征:

      my $num = 3;
      
      mutating-func($num);
      
      say $num; # prints 8
      
      sub mutating-func($n is rw) {
          $n = $n + 5;
          return $n;
      }
      

      但是如果你传递一个不可变的对象(比如一个数字而不是一个变量),这会给你带来错误:

      # dies with "Parameter '$n' expected a writable container, but got Int value"
      say mutating-func(5); # Error since you can't change a value
      
      sub mutating-func($n is rw) {
          $n = $n + 5;
          return $n;
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-06-04
        • 2012-11-25
        • 1970-01-01
        • 2014-11-10
        • 1970-01-01
        • 2021-10-17
        相关资源
        最近更新 更多