私はPOODRの本を読んでおり、デフォルト値で初期化するために古い構文を使用しています。私は新しい構文と同じを実装する必要があります。キーワードargsを使用したrubyの初期化
class Gear
attr_reader :chainring, :cog, :wheel
def initialize(args)
@chainring = args.fetch(:chainring, 40)
@cog = args.fetch(:cog, 10)
@wheel = args[:wheel]
end
def gear_inches
ratio * diameter
end
def diameter
wheel * diameter
end
end
Gear.new(chainring: 52, cog: 11, wheel: Wheel.new(26,1.5)).gear_inches
新しいキーワードargsではどのように見えますか?これは下の私の推測ですが、上のようなホイールでも同じ結果になるかどうかはわかりません。 :wheel
が必要となりますので、古いコードにはそれがなかったのに対し、キーワード引数を指定して
class Gear
attr_reader :chainring, :cog, :wheel
def initialize(chainring: 40, cog: 10, wheel:) #is this good here for wheel?
@chainring = chainring
@cog = cog
@wheel = wheel #is this good here for wheel?
end
......
end
'wheel:nil'は同等です – Stefan