在我的Ruby代码中,数组不能强制为Float(TypeError)

在我的Ruby代码中,数组不能强制为Float(TypeError),ruby,Ruby,我应该制作变量,将标准单位转换成公制单位。这是一个关于“艰苦学习Ruby”课程的练习。我正在尝试在PowerShell中运行以下代码。代码中的信息来自本书的作者 name = 'Zed A. Shaw' age = 35 # not a lie in 2009 height = 74 # inches weight = 180 # lbs eyes = 'Blue' teeth = 'White' hair = 'Brown' cm = 2.54 kg_1 = 2 kg_2 = 1/10 pu

我应该制作变量,将标准单位转换成公制单位。这是一个关于“艰苦学习Ruby”课程的练习。我正在尝试在PowerShell中运行以下代码。代码中的信息来自本书的作者

name = 'Zed A. Shaw'
age = 35 # not a lie in 2009
height = 74 # inches
weight = 180 # lbs
eyes = 'Blue'
teeth = 'White'
hair = 'Brown'
cm = 2.54
kg_1 = 2
kg_2 = 1/10

puts "Let's talk about #{name}."
puts "He's #{height * cm} inches tall."
puts "He's #{(weight * kg_1) - kg_2} pounds heavy."
puts "Actually that's not too heavy."
puts "He's got #{eyes} and #{hair} hair."
puts "His teeth are usually #{teeth} depending on the coffee."

# this line is tricky, try to get it exactly right
puts "If I add #{age}, #{height * cm}, and #{(weight * kg_1) - kg_2 }"
puts "I get #{age + (height * cm) + [(weight * kg_1) - kg_2]}."
最后我不得不把所有的东西加起来,结果失败了。当我尝试在PowerShell中运行它时,会出现以下情况:

Traceback (most recent call last):
1: from ex5.rb:20:in `<main>'
ex5.rb:20:in `+': Array can't be coerced into Float (TypeError).

我的错误是什么?如何修复它?

问题在于这一行:

"I get #{age + (height * cm) + [(weight * kg_1) - kg_2]}."
你可能想看看这样的东西

I get 1234.12.
您可以像在数学课上一样使用[]括号对操作进行分组。在Ruby中,您只能使用来分组。[]是用于引入数组的符号。试试这个:

"I get #{age + (height * cm) + ((weight * kg_1) - kg_2)}."

看起来错误发生在第行:

我得到{年龄+身高*cm+[体重*kg_1-kg_2]}

这里的问题是使用[]表示程序应该查找数组对象。通过在这里使用[],可以理解为您希望使用Ruby中的+方法操作符将数组对象添加到浮点对象。Ruby发出了那个错误消息。看来你要做的是:

将年龄添加到高度*cm以返回浮动 将该浮动值与重量*kg_1和kg_2之间的差值相加 通过替换:

[(weight * kg_1) - kg_2]

您应收到以下预期插值:

I get 582.96

在ruby中不能使用方括号作为数学括号,方括号声明数组。[重量*kg\u 1-kg\u 2]→ 重量*kg\u 1-kg\u 2桶!我是新手,所以我很高兴现在知道了这一点。[U]sing[]表示程序应该查找数组对象否,[]表示数组对象。
I get 582.96