読者です 読者をやめる 読者になる 読者になる

【Ruby】デフォルト引数にハッシュを使えることを知った

Ruby

Rubyの書籍を読んでいたら、引数に見慣れない指定の仕方をしているのがあった。
下のサンプルはオリジナルだけど、こんな感じだった。

class Person
    def initialize(name1:"山田", name2:"太郎")
        @name1 = name1
        @name2 = name2
    end

    def introduce()
        puts "#{@name1} #{@name2}"
    end
end

sample1 = Person.new
sample1.introduce

実行結果

$ 山田 太郎

で、私が???と思ったのがここ。

def initialize(name1:"山田", name2:"太郎")


最初見た時は、この:(コロン)で指定してるのはなんだろうか。
Rubyだとシンボルかハッシュだけど、その他でもコロンは使いそうだなぁなんて考えてしまった。


で、結果としてハッシュだった。
引数にハッシュ指定するなんてオライリーの「初めてのRuby」に書いてなかったぞ??(ぷんすか


ハッシュで指定することにより、keyを指定して引数を渡せる。
例えば。

class Person
    def initialize(name1:"山田", name2:"太郎")
        @name1 = name1
        @name2 = name2
    end

    def introduce()
        puts "#{@name1} #{@name2}"
    end
end

このようなものがあったとして、name2にだけ引数を渡す場合は、

person = Person.new(name2:"二郎")
person.inttoduce
$ 山田 二郎

name1は指定されていないためデフォルト引数である山田が。
keyであるname2を指定して二郎を引数に渡しているため、結果 山田 二郎 が出力される。