【发布时间】:2023-01-17 20:41:57
【问题描述】:
问题:假二进制:给定一串数字,你应该用'0'替换5以下的任何数字,用'1'替换5及以上的任何数字。返回结果字符串。
任何人都可以解释为什么我得到这个错误:./lib/solution.rb:4:in `>': comparison of String with 5 failed (ArgumentError)
def fake_bin(s)
arr = s.split("")
arr.map! { |x| if x > 5 ? x = 1 : x = 0 }
return arr.join("")
end
我实际上已经用 gsub 完成了解决方案,所以我不需要其他建议,我只是很好奇为什么我无法使这种方法起作用以及导致此错误的原因。
我确实尝试过以多种方式构建 if 语句,但没有任何区别。
【问题讨论】:
-
您不能(直接)将字符串与整数进行比较。使用
x.to_i将您的字符串转换为整数。 -
此外,您的地图中不需要
if声明。你可以做arr.map! {|x| x.to_i >= 5 ? 1 : 0}
标签: ruby argument-error