桑迪梅斯在Ruby的实用面向对象设计有47页上的这个例子:红宝石2.1+关键参数初始化器语法
class Gear
attr_reader :chainring, :cog, :wheel
def initialize(args)
@chainring = args[:chainring]
@cog = args[:cog]
@wheel = args[:wheel]
end
...
end
在Ruby 2.1+可以在同一被表示为:
class Gear
attr_reader :chainring, :cog, :wheel
def initialize(chainring:, cog:, wheel:)
@chainring = chainring
@cog = cog
@wheel = wheel
end
...
end
这两个会相当吗?他们似乎也以相同的方式工作。