我是ruby新手,我的问题是传递一个hash:f=>32对我来说也是新的,我不知道如何提取该对中的值(32)。我想知道如何提取它,这样我就可以将这个数字转换成f或c。这是一个家庭作业吗?你也可以使用它,这基本上是一个获取散列参数并将属性分配给变量的速记。如
我是ruby新手,我的问题是传递一个hash:f=>32对我来说也是新的,我不知道如何提取该对中的值(32)。我想知道如何提取它,这样我就可以将这个数字转换成f或c。这是一个家庭作业吗?你也可以使用它,这基本上是一个获取散列参数并将属性分配给变量的速记。如,ruby,Ruby,我是ruby新手,我的问题是传递一个hash:f=>32对我来说也是新的,我不知道如何提取该对中的值(32)。我想知道如何提取它,这样我就可以将这个数字转换成f或c。这是一个家庭作业吗?你也可以使用它,这基本上是一个获取散列参数并将属性分配给变量的速记。如果我有两个参数,这适用吗?例如:def initialize(temp)@f=temp[:f]@c=temp[:c]end您可以有一个包含任意多个键的散列。老实说,我不知道为什么在类为您进行转换时,您会希望接受同时包含F和C的输入。等等,您的意
我是ruby新手,我的问题是传递一个hash
:f=>32
对我来说也是新的,我不知道如何提取该对中的值(32
)。我想知道如何提取它,这样我就可以将这个数字转换成f或c。这是一个家庭作业吗?你也可以使用它,这基本上是一个获取散列参数并将属性分配给变量的速记。如果我有两个参数,这适用吗?例如:def initialize(temp)@f=temp[:f]@c=temp[:c]end
您可以有一个包含任意多个键的散列。老实说,我不知道为什么在类为您进行转换时,您会希望接受同时包含F和C的输入。等等,您的意思是什么?你的意思是我不需要def初始化吗?如果我有两个参数,这适用吗?例如:def initialize(temp)@f=temp[:f]@c=temp[:c]end
您可以有一个包含任意多个键的散列。老实说,我不知道为什么在类为您进行转换时,您会希望接受同时包含F和C的输入。等等,您的意思是什么?你的意思是我不需要def初始化吗?谢谢你的输入。当我知道我可以使用散列加键来获取值时,我就明白了。没问题。我只是在逃避自己的工作,TBH。希望不是太多。谢谢你的意见。当我知道我可以使用散列加键来获取值时,我就明白了。没问题。我只是在逃避自己的工作,TBH。希望不是太多。
Temperature.new(:f => 32).in_celsius #=> 0
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
def initialize(temp)
@f = temp[:f]
end
class Temperature
def initialize(input)
puts "in #{self.class}.#{__method__}, input.class.name is: #{input.class.name}"
@f, @c = input[:f], input[:c]
end
def in_fahrenheit
return @f if @f
c = @c * 1.8
c += 32
@f = c.floor
@f
end
def in_celsius
return @c if @c
f = @f - 32
f /= 1.8
@c = f.floor
@c
end
def fahrenheit
return @f if @f
in_fahrenheit
end
def celsius
return @c if @c
in_celsius
end
end
> t = Temperature.new(f: 32)
in Temperature.initialize, input.class.name is: Hash
=> #<Temperature:0x0000000996cbf8 @f=32, @c=nil>
> t = Temperature.new(f: 32)
=> #<Temperature:0x00000009856ca0 @f=32, @c=nil>
> t.fahrenheit
=> 32
> t.celsius
=> 0
> t.in_fahrenheit
=> 32
> t.in_celsius
=> 0
> t = Temperature.new(c: 0)
=> #<Temperature:0x0000000986b038 @f=nil, @c=0>
> t.fahrenheit
=> 32
> t.celsius
=> 0
> t.in_fahrenheit
=> 32
> t.in_celsius
=> 0
t = Temperature.new(f: 32, c: 32)
class Temperature
def initialize(input)
puts "in #{self.class}.#{__method__}, input.class.name is:"<<" #{input.class.name}"
@f, @c = input[:f], input[:c]
raise "Only one input, please!" if @f and @c
end
def in_fahrenheit
return @f if @f
c = @c * 1.8
c += 32
@f = c.floor
@f
end
def in_celsius
return @c if @c
f = @f - 32
f /= 1.8
@c = f.floor
@c
end
def fahrenheit
return @f if @f
in_fahrenheit
end
def celsius
return @c if @c
in_celsius
end
end
> t = Temperature.new(f: 32, c: 0)
in Temperature.initialize, input.class.name is: Hash
RuntimeError: Only one input, please!
def initialize(f = 0, c = 0)
puts "f is #{f.inspect}"
puts "c is #{c.inspect}"
end
Temperature.new(:f => 32)
f is {:f=>32}
c is 0
Temperature.new(32)
f is 32
c is 0
Temperature.new(0, 32)
f is 0
c is 32
def initialize(options)
f = options[:f]
c = options[:c]
puts "f is #{f.inspect}"
puts "c is #{c.inspect}"
end
Temperature.new(:f => 32)
f is 32
c is nil
Temperature.new(:c => 32)
f is nil
c is 32
Temperature.new(f: 32)
f is 32
c is nil
Temperature.new(c: 32)
f is nil
c is 32
def initialize(f: nil, c: nil)
puts "f is #{f.inspect}"
puts "c is #{c.inspect}"
end
Temperature.new(f: 32)
f is 32
c is nil
Temperature.new(c: 32)
f is nil
c is 32
Temperature.new(x: 32)
ArgumentError: unknown keyword: x
Temperature.new({:f => 32})
f is 32
c is nil