【发布时间】:2018-12-13 07:45:15
【问题描述】:
这是一个 ruby 数组:
array = ['x', 3, 0, 4, 4, 7]
我想通过array 进行映射,将数组中的每个整数(0 除外)都减去 2,然后返回一个新数组。
当有字母时,字母不会改变。
示例输出:
['x', 1, 0, 2, 2, 5]
这就是我所拥有的,但我收到错误消息“未定义的方法整数?”有人可以告诉我是什么问题吗?
def minusNumber(array)
array.map do |e|
if e.integer? && e !== 0
e - 2
end
end
end
【问题讨论】:
-
使用
is_a?来检查对象的类,因为integer?不是字符串的方法,这就是NoMethodError 的原因。也许你需要一个 else 语句。并替换!==。 -
您没有为非字母
Strings 指定“0”或“2”应该返回什么?它们不是Integers,但它们也不是“字母”。 (为了这个问题,我假设标点符号和其他非数字/非字母字符应被视为“字母”)