#9 Rubyで学ぶ関数の基本
Rubyでは、関数のことを「メソッド」と呼びますが、Pythonの関数のように手軽に定義できます。この記事では、Rubyにおけるメソッドの基本を解説します。
メソッドを作ってみる
Rubyでは`def`というキーワードを使います。
def greet(name)
puts "こんにちは、#{name}さん"
end
greet("太郎")
メソッドの終わりには`end`を書きます。中括弧`{}`を使う言語に慣れていると最初は違和感があるかもしれませんが、Rubyのコードでは`end`が随所に登場するので早めに慣れておきましょう。
値を返すメソッド
Rubyのメソッドは、`return`を書かなくても、最後に評価した値が自動的に戻り値になります。
def add(a, b)
a + b
end
もちろん、明示的に`return`を書くこともできます。条件によって途中で処理を打ち切って値を返したい場合は、`return`を使う必要があります。
def check(age)
return "未成年です" if age < 20
"成人です"
end
デフォルト引数
def greet(name = "ゲスト")
puts "こんにちは、#{name}さん"
end
引数を渡さずに呼び出した場合は`"ゲスト"`が使われ、渡した場合はその値で上書きされます。複数の引数にデフォルト値を設定することもできますが、デフォルト値のない引数を後ろに置くと構文エラーになる点には注意しましょう。
キーワード引数
引数が増えてくると、呼び出し側で「どの値が何を表しているか」が分かりにくくなります。そんなときはキーワード引数が便利です。
def greet(name:, honorific: "さん")
puts "こんにちは、#{name}#{honorific}"
end
greet(name: "太郎", honorific: "くん")
呼び出し時に引数名を明示するため、順序を気にせず渡せるうえ、コードの意図も読み取りやすくなります。
Rubyならではの注意点
「最後に評価した値が自動的に戻り値になる」という仕組みは、Rubyのシンプルさを表す特徴ですが、意図せず余計な値が返ってしまうこともあります。複数の処理があるメソッドでは、何が最後に評価されているかを意識するか、明示的に`return`を書いておくと安心です。また、Rubyのメソッド名の末尾に`?`や`!`を付ける慣習(例: `empty?`、`save!`)もよく使われます。`?`は真偽値を返すメソッド、`!`は破壊的な変更(元のオブジェクト自体を書き換える)を行うメソッドを表す目印として使われます。
まとめ
Rubyのメソッドは`def`・`end`で定義し、`return`を省略しても最後の値が返ります。デフォルト引数やキーワード引数、`?`・`!`という命名の慣習もあわせて理解し、読みやすいコードを書きましょう。
本ページはプロモーションを含みます。
参考書籍(PR)
Rubyをもっと学びたい方には「プロを目指す人のためのRuby入門[改訂2版]」がおすすめです。
PR
コードを書かずに自動化したい方へ
「学んだけど自分の作業に組み込む時間がない」という方向けに、ダブルクリックで動く Windows専用の自動化ツールをオーダーメイドで作成しています。気になる方は こちらをご覧ください。
コメント
コメントを投稿