【发布时间】:2023-04-11 11:33:01
【问题描述】:
目前正在尝试创建一个删除最小数字的 ruby 函数,如果该最小数字重复,它应该只删除第一个最小数字。这是我尝试过的代码
def RemoveSmallest(numbers)
if numbers.count(numbers.min.uniq) > 1
numbers.delete_at(numbers.index numbers.min.uniq)
numbers
else
numbers.delete(numbers.min)
numbers
end
end
puts RemoveSmallest([2,2,4,5,6])
这是错误
remove_small.rb:3:in `RemoveSmallest': undefined method `uniq' for 2:Fixnum (NoMethodError)
from remove_small.rb:15:in `<main>'
我不确定为什么在我对其应用uniq 方法时代码会出错
【问题讨论】:
-
你的方法应该被称为
remove_smallest,而不是RemoveSmallest。大小写在 Ruby 中很重要,当您使用前导大写字母时,您正在创建一个常量。 -
numbers.delete_at(numbers.index(numbers.min)) -
@meagar 感谢您的反馈,对于 ruby 来说非常新,我使用 camelcase 的原因是因为我在网络上的某个地方阅读过它,以使变量更易于阅读
-
@user3292755 Camel case 用于定义常量,如类和模块名。