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