4

オプション ハッシュを実装するにはどうすればよいですか? オプション ハッシュを含むクラスの構造はどのようになっていますか? 人のクラスがあるとします。呼び出されたときにオプション ハッシュを使用して年齢を教えてくれる my_age などのメソッドを実装したいと考えています。

4

4 に答える 4

6

次のようなことができます。

class Person

  def initialize(opts = {})
    @options = opts
  end

  def my_age
    return @options[:age] if @options.has_key?(:age)
  end

end

そして今、あなたはこのような年齢に電話することができます

p1 = Person.new(:age => 24)<br/>
p2 = Person.new

p1.my_age # => 24<br/>
p2.my_age # => nil
于 2013-02-14T06:59:16.290 に答える
3
class Person
  def birth_date
    Time.parse('1776-07-04')
  end

  def my_age(opts=nil)
    opts = {
      as_of_date: Time.now, 
      birth_date: birth_date,
      unit: :year
    }.merge(opts || {})
    (opts[:as_of_date] - opts[:birth_date]) / 1.send(opts[:unit])
  end
end
于 2013-02-14T02:44:07.993 に答える
0

**Ruby 2.x では、次の演算子を使用できます。

class Some
  def initialize(**options)
    @options = options
  end

  def it_is?
    return @options[:body] if @options.has_key?(:body)
  end
end
于 2016-04-23T05:08:24.140 に答える