如何将数组中的每个元素除以某个数字?

con*_*con 13 raku

我有一个数组:

my @e = <60.922    20.946     8.721     7.292     4.306     2.821     2.765     2.752     2.741     2.725>
Run Code Online (Sandbox Code Playgroud)

我想将数组中的每个元素除以最小值,但是

@e /= @e.min
Run Code Online (Sandbox Code Playgroud)

产生了单个元素,这是不正确的。

我已阅读https://docs.raku.org/type/Array但我不了解 Raku 的基本元素。

如何将数组中的每个项目除以相同的数字?

p6s*_*eve 15

您可以像这样使用 raku hyper复合元运算符:

@a >>/=>> @a.min

  • >>X>>意思是“应用运算符X符(左侧有更多项)”
  • /=表示“分配除法运算符的结果/来替换每个原始左侧项目”

使用/而不是/=如果您想返回结果列表但保留@不变的函数式编程风格,

[根据@lizmat 和@Sebastian 评论编辑]

  • 我喜欢它:-)但我认为 `@a &gt;&gt;/=&gt;&gt; @a.min` 会更合适,因为这实际上会改变数组的内容,这就是操作所指示的。 (7认同)

Eli*_*sen 8

my @a = 2, 3, 5, 7, 10;
my $div = @a.min;
$_ /= $div for @a;
say @a;  # [1 1.5 2.5 3.5 5]
Run Code Online (Sandbox Code Playgroud)

当您迭代数组时,您会得到可变元素。