クモのようにコツコツと

フロントエンドエンジニア イイダリョウの技術ブログ。略称「クモコツ」

【Ruby】メソッドの定義、実行(def〜end)

Rubyの続きです。前回は文字列や計算の出力を行いました。今回はメソッドの定義と実行をやってみたいとおもいます。メソッドはdefで始まりendで終わる書き方のようでした。それではいきましょう!

【目次】

Ruby/Ruby on Railsを習得するためにやったこと まとめ qiita.com

メソッド(引数なし)

今回も「20分ではじめるRuby」を参考に進める。今回のテーマはメソッド(関数のことか)。

※参考:20分ではじめるRuby

メソッドはdefから始まりendで終わる書き方のようだ。

※参考:クラス/メソッドの定義 (Ruby 3.3 リファレンスマニュアル)


hiメソッドの定義をしてみる。メソッドの名の後に引数はない。処理内容はputsによる文字の出力。

# メソッドの定義(def〜end)
# メソッド(引数なし)
def hi
    puts "Hello, Ruby!"
end

putsについては前回記事を参照。

※参考:【Ruby】文字列や計算の出力(putsメソッド、Mathモジュール) - クモのようにコツコツと


メソッドの実行は引数を入れるカッコはなくても実行できるようだ。カッコありも実行してみる。

#メソッドの実行
hi
hi()

Rubyを起動した結果

% ruby ri20min_4.rb
Hello, Ruby!
Hello, Ruby!

カッコはあってもなくても結果は変わらなかった。

ソースコード
※参考:get-started-with-ruby-in-20-minutes/ri20min_4.rb at main · ryo-i/get-started-with-ruby-in-20-minutes · GitHub

メソッド(引数あり)

次に引数ありのメソッドを定義してみる。

# メソッド(引数あり)
def hi(name)
    puts "Hello, #{name}!!"
end

引数name#{ }の中に入れる。「式展開」といって、この中にRubyの式を書けるようだ。

※参考:リテラル (Ruby 3.3 リファレンスマニュアル)


メソッドを実行

hi("John")
hi("Paul")
hi("George")
hi "Ringo"
hi

引数のカッコはなくても実行できるようだ。最後に引数なしでメソッドを実行してみる。


Rubyを起動した結果

% ruby ri20min_5.rb
Hello, John!!
Hello, Paul!!
Hello, George!!
Hello, Ringo!!
ri20min_5.rb:4:in `hi': wrong number of arguments (given 0, expected 1) (ArgumentError)
        from ri20min_5.rb:12:in `<main>'

カッコなしのRingoも表示された!引数なしの実行はエラーになった、、

メソッド(引数 & 初期値あり)

引数には初期値を設定できるようだ。やってみる。

# メソッド(引数 & 初期値あり)
def hi(name = "ruby")
    puts "Hello, #{name.capitalize}!!!" #1文字目を大文字にする
end

引数の初期値はrubyに設定した。

引数に繋げているcapitalizeは、ローマ字の1文字目を大文字にする組み込みライブラリのようだ。

※参考:String#capitalize (Ruby 3.3 リファレンスマニュアル)


メソッドの実行

hi "john"
hi "paul"
hi "george"
hi "ringo"
hi

先ほどと同様に最後に引数無しでメソッドを実行してみる。


Rubyを起動した結果

% ruby ri20min_6.rb
Hello, John!!!
Hello, Paul!!!
Hello, George!!!
Hello, Ringo!!!
Hello, Ruby!!!

今度は引数なしでもエラーにならない!初期値のrubyが表示されている。また、capitalizeによってすべての引数の一文字目が大文字(Rubyなど)に変換された!

最後に

ということで、今回はRubyのメソッドを実行してみました。次はクラス、オブジェクトの作成と実行をしてみたく思います。クラスによってだんだんオブジェクト指向っぽい概念に入っていけそうで楽しみです(JSにもクラス記法は経験しましたが正直あまり理解できてなかった)。それではまた!


Ruby/Ruby on Railsを習得するためにやったこと まとめ qiita.com