采用哈希的实例初始化

Jos*_*ald 1 ruby

大多数在线资料都有这样的初始化:

class MyClass
  attr_accessors :a, :b, :c
  def initialize(a,b,c)
    @a = a
    @b = b
    @c = c
  end
end
Run Code Online (Sandbox Code Playgroud)

有或没有默认值.创建一个新实例是:

n = MyClass.new(1,2,3)
n.a # => 1
n.b # => 2
n.c # => 3
Run Code Online (Sandbox Code Playgroud)

我想知道如何使用哈希语法初始化实例,如:

n = MyClass.new(:a => 1, :b => 2, :c => 3)
Run Code Online (Sandbox Code Playgroud)

这相当于:

n = MyClass.new(:b => 2, :a => 1, :c => 3)
Run Code Online (Sandbox Code Playgroud)

这难以实施吗?

Aus*_*tio 9

使用Ruby 2.0及更高版本中提供的ruby关键字参数

初始化参数中的格式是 variable:

class MyClass
    attr_accessors :a, :b, :c
    def initialize(a:, b:, c: )
      @a = a
      @b = b
      @c = c
    end
  end
Run Code Online (Sandbox Code Playgroud)