gpt4 book ai didi

ruby - 尝试对数组中的每个元素求平方时未定义的方法

转载 作者:太空宇宙 更新时间:2023-11-03 18:13:33 24 4
gpt4 key购买 nike

我正在尝试编写一个名为 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

当尝试运行应返回 9414square_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: ["1","2","3"]:Array 的未定义方法 'to_i'

你想要:

num_to_int = number_array.map(&:to_i)

还有

num_squared = num_to_int.each{|n| n**2}

不返回 each 的结果,只返回原始数组。

所以第一次修复它只会返回 "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

尽管我对您要实现的目标感到困惑。

关于ruby - 尝试对数组中的每个元素求平方时未定义的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29846003/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com