代码之家  ›  专栏  ›  技术社区  ›  pistacchio

无符号变量、常量、绑定:何时选择

  •  4
  • pistacchio  · 技术社区  · 6 年前

    3.14 在你的代码里,这就是为什么你要定义一个常量 PI 因为它所代表的事物的本质是不能改变的,所以它的价值是 及时。

    定义绑定到另一个实体的变量 := 也几乎是清楚的,但不是真的。如果我把一个变量绑定到 3.14 ,这和定义 常数?是 $a := $b 实际定义 $a 别名 $b ? 此外,在某些语言中,引用通常用于明确表示,在对象构造或函数调用中,您不希望复制对象,但在同一范围内,为什么使用

    $number_of_cakes = 4;
    $also_the_number_of_cakes := $number_of_cakes;
    

    ?

    最后,文档解释了 怎样 一个人可以定义一个无符号变量(不能改变,所以,实际上,还有另一种常量),但不能 为什么?

    2 回复  |  直到 6 年前
        1
  •  12
  •   Community CDub    5 年前

    常量在许多语言中都很常见。你不想把3.14写在你的代码里,这就是为什么你定义了一个常数PI,根据它所代表的事物的性质,它是不能改变的,这就是为什么它的值在时间上是恒定的。

    你用的是什么 constant

    A 1

    例如:

    BEGIN my $bar = 42;
    
    loop {
      constant foo = $bar;
      $bar++;
      last if $++ > 4;
      print foo; # 4242424242
    }
    

    注意如果你没有 BEGIN 然后该常量将被初始化并被固定为值 (Any) .

    我倾向于省去sigil来加强这个想法,它是一个常量,但是如果你愿意的话,你可以用sigil。

    定义绑定到另一个实体的变量 := 3.14 ,这和定义 PI $a := $b 实际定义 $a $b 或者,像其他一些语言所说的,参考文献?

    绑定只是绑定标识符。如果其中一个发生变化,它们都会:

    my $a = 42;
    my $b := $a;
    $a++;
    $b++;
    say $a, $b; # 4444
    

    最后,文档解释了如何定义一个无符号变量(不能改变,所以,实际上,是另一种常量),但没有解释为什么要这样做。

    如果绑定的对象是一个变量,那么它可以是不同的。例如:

    my $variable  = 42;        # puts the value 42 INTO $variable
    my \variable  = $variable; # binds variable to $variable
    say ++variable; # 43
    my \variable2 = 42;        # binds variable2 to 42
    say ++variable2;           # Cannot resolve caller prefix:<++>(Int:D);
                               # ... candidates ... require mutable arguments
    

    42 )或其他完全不变的值(如典型的 List )否则就用一个符号。基督教青年会。

    无符号变量解决了什么问题?当一个变量,一个常量,一个绑定变量不能解决无符号变量所解决的问题时,实际情况是什么?

    1 看到了吗 my answer to JJ's SO about use of constant with composite containers .

        2
  •  8
  •   Elizabeth Mattijsen    6 年前

    如果我把一个变量绑定到3.14,这和定义一个PI常量不一样吗?

    好吧,从技术上说是的,除了 3.14 是一个 Rat ,和 pi π )是一个 Num .

    $a:=$b实际上是将$a定义为$b的别名,还是其他一些语言称之为引用?

    没有什么意义。但是,有时可以方便地将某些内容别名为数组中的元素或哈希中的键,以防止重复查找:

    my %foo;
    my $bar := %foo<bar>;
    ++$bar for ^10;
    

    无符号变量解决了什么问题?

    my answer := my $ = 42;
    say "The answer is {answer}";
    

    当一个变量,一个常量,一个绑定变量不能解决无符号变量所解决的问题时,实际情况是什么?

    在我看来,无符号变量并不能解决问题,而是试图迎合不同的编程风格。所以我不确定这个问题的正确答案是什么。

        3
  •  1
  •   drclaw    5 年前

    阿尔索 constant our 默认范围。

    推荐文章