gpt4 book ai didi

ruby - 正数/负数总和语法错误

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:28:30 30 4
gpt4 key购买 nike

所以我目前正在代码 war 中解决以下问题:

返回一个数组,其中第一个元素是正数的计数,第二个元素是负数的总和。如果输入数组为空或 null,则返回一个空数组。

我想出了下面的代码,它并不漂亮,但我知道它应该可以工作:

def count_positives_sum_negatives(lst)
pos, neg = 0, 0

lst.each do |num|
if num < 0
neg += num
else
pos++
end
end

[pos, neg]
end

然后我调用以下测试:

count_positives_sum_negatives([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, -11, -12, -13, -14, -15])

它应该返回 => [10,-65]

但是它返回以下错误:

(repl):11: syntax error, unexpected keyword_end
(repl):17: syntax error, unexpected end-of-input, expecting keyword_end
..., 10, -11, -12, -13, -14, -15])
...

谁能给我解释一下为什么会这样?

最佳答案

正如人们指出的那样,这里的错误是 x++ 不是有效的 Ruby,您需要 x +=1 代替。后缀和前缀增量运算符在大多数语言中都是一个困惑的点,因此 Ruby 从未实现过。比如,x++ + x+++++x 的结果是什么?

这是使用 partition 的不同策略首先拆分数组,然后使用 inject 将其折叠在一起:

positives, negatives = list.partition(&:positive?)

[ positives.length, negatives.inject(0, &:+) ]
# => [10,-65]

关于ruby - 正数/负数总和语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40621542/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com