Ruby 尝试对数组中的每个元素求平方时使用未定义的方法
我正在尝试编写一个名为Ruby 尝试对数组中的每个元素求平方时使用未定义的方法,ruby,undefined,nomethoderror,Ruby,Undefined,Nomethoderror,我正在尝试编写一个名为square\u digits的方法,将给定数字中的每个数字进行平方运算。我写道: def square_digits(num) number_array = num.to_s.split("") num_to_int = number_array.to_i num_squared = num_to_int.each{|n| n**2} return num_squared.join("") end 当尝试运行应返回9414的square\u digits
square\u digits
的方法,将给定数字中的每个数字进行平方运算。我写道:
def square_digits(num)
number_array = num.to_s.split("")
num_to_int = number_array.to_i
num_squared = num_to_int.each{|n| n**2}
return num_squared.join("")
end
当尝试运行应返回9414
的square\u digits(3212)
时,我收到以下错误消息:
`block in square_digits': undefined method `**' for "3":String (NoMethodError)
from `each'
from `square_digits'
from `
'
我不太确定我该怎么做来修复它;有什么建议吗?嗯,这里有一些问题: 输入
123
时,应出现以下错误:
num_to_int = number_array.to_i
与:
NoMethodError:for[“1”、“2”、“3”]的未定义方法“to_i”:数组
你想要:
num_to_int = number_array.map(&:to_i)
也
num_squared=num_to_int.each{n | n**2}
不返回每个的结果,只返回原始数组
因此,对于第一个修复,它只会返回“123”
你想要:
num_squared = num_to_int.map{|n| n**2}
最后一个函数如下所示:
def square_digits(num)
number_array = num.to_s.split("")
num_to_int = number_array.map(&:to_i)
num_squared = num_to_int.map{|n| n**2}
return num_squared.join("")
end
尽管我对你想要达到的目标感到困惑。你也可以试试这个;)
或
def square_digits(num)
num.to_s.chars.map { |n| n.to_i ** 2 }.join("")
end
我本想发布相同的代码,但你用30秒咬了我;)1 +迪基,考虑你自己警告:如果你咬别人,我会报告你。为什么?我指的是@Gagen评论中的拼写错误。:-)
def square_digits(num)
num.to_s.chars.map { |n| n.to_i ** 2 }.join("")
end