Kuzunoha-NEのブログ

プログラミングなどの勉強をしてます

Rubyのキーワード引数というヤツ

Rubyのキーワード引数というヤツ

こんばんは、葛の葉です。

お勉強したまへ、というお達しがありました。あっふーん…(達し)

というわけで最近はこの書籍を使って勉強しております。

キーワード引数というヤツ

なんか知らんけど関数を作る時に引数名を作ることが出来るようです。へぇ。Pythonにもあったねたしか。

// Pythonだと…

def animal(momonga, dog='ももちゃん', cat='めけめけ王子三世'):
    return cat


print(animal('neko'))

>>>めけめけ王子三世

cat = 'めけめけ王子三世'なのわかりやすい。

// Rubyだと…

def animal(momonga, dog: 'ももちゃん', cat: 'めけめけ王子三世' )
    cat
end

p(animal('neko'))

>>"めけめけ王子三世"

返り値は:catじゃなくてcatにしないと駄目?:catじゃないの?

def animal(momonga, dog: 'ももちゃん', cat: 'めけめけ王子三世' )は省略形で、正しく書くならdef animal(momonga, {:dog => 'ももちゃん', :cat => 'めけめけ王子三世'}こうなんじゃないか?やってみよう。

def animal(momonga, {:dog => 'ももちゃん', :cat => 'めけめけ王子三世'}
    cat
end
p(animal('neko'))

sand.rb:9: syntax error, unexpected {
def animal(momonga, {:dog => 'ももちゃん', :c...
                    ^
sand.rb:11: syntax error, unexpected keyword_end, expecting end-of-input
(Google翻訳[2018/11/2])sand.rb:11:構文エラー、予期しないkeyword_end、入力の終了を予期する

わがんね😭

所謂シンボルではなくて、ブロックとしてみなされているのかな?

この本については後ほどレビューしてみます

先程記載した本派中々面白いです。5章まで読みましたが、テスト駆動開発で行っていますので、前回、PythonでUnittestについて書いたのですが、より理解が深まったと思いました。この本のテストはRubyで書かれているので、Pythonで書き直してみるのも楽しいかも知れませんね。それと、Rubyはあまりやったことなかったので、知らないところはやはり出てきました。が、親切に書いてくれているので、Rubyちょっとしか触ったこと無いって人にも向いていると思います。

kuzunoha-ne.hateblo.jp