如何在Ruby中对整数字符串数组求和 附代码报错排查
代码修复说明
现有代码错误点
- 直接对数组
ch调用to_i方法:to_i是字符串类的方法,数组本身没有该方法,这是触发报错的直接原因 - 遍历对象错误:代码中遍历的
string变量未定义,你存储待处理数组的变量名为ch - 数字判断逻辑有缺陷:
isdigit方法只能识别纯数字字符,带+、-前缀的合法整数字符串会被判定为非数字,会导致转换遗漏
修复后代码
基础遍历写法(易理解)
ch = ["+7", "-3", "+10", "0"] soma = 0 ch.each do |str| soma += str.to_i end p(soma) # 输出结果:14
Ruby简洁惯用写法
利用Ruby链式调用特性,一行即可完成转换求和:
ch = ["+7", "-3", "+10", "0"] soma = ch.map(&:to_i).sum p(soma)
可选:带非法值过滤的写法
如果数组中可能存在非整数字符串,可添加正则校验过滤无效值:
ch = ["+7", "-3", "+10", "0", "abc", "12.5", "a13"] soma = 0 ch.each do |str| # 仅匹配带可选正负号的纯整数字符串 soma += str.to_i if str.match?(/^[+-]?\d+$/) end p(soma) # 输出结果:14
内容的提问来源于stack exchange,提问作者Edd
相关产品推荐
相关产品推荐

