尝试对数组中的每个元素求平方时未定义的方法
Undefined method when trying to square each element in array
我正在尝试编写一个名为 square_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
在尝试 运行 square_digits(3212)
时,应该 return 9414
,我收到以下错误消息:
`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: undefined method 'to_i' for ["1","2","3"]:Array
你想要:
num_to_int = number_array.map(&:to_i)
还有
num_squared = num_to_int.each{|n| n**2}
return each
的结果不只是原始数组。
所以第一次修复它只会 return "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.split('').map { |n| n.to_i ** 2 }.join("")
end
或
def square_digits(num)
num.to_s.chars.map { |n| n.to_i ** 2 }.join("")
end
我正在尝试编写一个名为 square_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
在尝试 运行 square_digits(3212)
时,应该 return 9414
,我收到以下错误消息:
`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: undefined method 'to_i' for ["1","2","3"]:Array
你想要:
num_to_int = number_array.map(&:to_i)
还有
num_squared = num_to_int.each{|n| n**2}
return each
的结果不只是原始数组。
所以第一次修复它只会 return "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.split('').map { |n| n.to_i ** 2 }.join("")
end
或
def square_digits(num)
num.to_s.chars.map { |n| n.to_i ** 2 }.join("")
end