【发布时间】:2018-05-22 05:37:46
【问题描述】:
我正在创建一个 Temperature 类,其中包含将温度从 f 转换为 c 的实例方法,反之亦然。一个测试用例是:
Temperature.new(:f => 32).in_celsius #=> 0
我认为传递 :f => 32 会产生转换。我不知道如何从哈希:f => 32 中提取值32。我想提取它,以便我可以将该数字转换为 f 或 c。
下面是我的答案代码。
class Temperature
def initialize(f = 0, c = 0)
@f = f
@c = c
end
def in_fahrenheit
c = @c * 1.8
c += 32
@f = c.floor
@f
end
def in_celsius
f = @f - 32
f /= 1.8
@c = f.floor
@c
end
def fahrenheit
@f
end
def celsius
@c
end
end
我不熟悉在创建对象时作为初始值传递的哈希值。如有任何建议,我将不胜感激。
【问题讨论】:
-
有什么问题?
-
我是 ruby 新手,我的问题是传递哈希
:f => 32对我来说也是新事物,我不知道如何提取该对中的值 (32)。我想知道如何提取它,以便我可以将该数字转换为 f 或 c。 -
这是家庭作业吗?
-
您也可以使用keyword arguments,它基本上是采用哈希参数并将属性分配给变量的简写。
标签: ruby