Help us understand the problem. What is going on with this article?

Rubyのメソッドについて

More than 1 year has passed since last update.

メソッドとは

メソッドは色々な処理をひとつにまとめて定義して、何度も再利用(実行)できるようにしたものです。

メソッドの種類

一般的にプログラミング言語には、メソッド的なものが2種類あります。

  • 言語に標準で入っている組み込み関数
  • ユーザが自分で定義するユーザ定義関数

ここでは、いわゆるユーザが定義する関数に当たる方を説明します。

メソッドの定義の仕方

Rubyのメソッド定義は、defendの間に、実行したい処理を入れます。

defとは define(定義する)の略です。

定義の仕方
def メソッド名
  メソッドが呼ばれたときの処理
end

試しに、1から5までの数字の和を求めるsumメソッドを 作って見ます。

sumメソッドの定義の仕方
def sum
  result = 0
  (1..5).each do |number|
    result += number
  end
  puts result
end

メソッドの呼び出し方

メソッドは呼び出されるまで動きません。なので、さきほど定義したsumメソッドを呼び出してみます。

sumメソッドの定義と呼び出し
def sum
  result = 0
  (1..5).each do |number|
    result += number
  end
  puts result
end

sum()

# 実行結果 15

引数なしの()なしの呼び出し

定義したメソッドはメソッド名を書くだけでも呼び出し可能です。

def hello
  puts "say Hello"
end

hello

# 実行結果 say Hello

メソッドの呼び出し方(再利用可能)

一度メソッドを定義しておくと、何度でも再利用できます。

def hello
  puts "say Hello"
end

hello
hello

# 実行結果 
# say Hello
# say Hello

このように

  • 何回も使えること
  • 処理の呼び出しにラベル(メソッド名)だけで呼び出せる

ことがメソッドのいいポイントかなと思います。

メソッドの引数について

メソッドには引数を渡すこともできます。これにより、引数次第で結果が変わるメソッドになります。

# メソッドの定義
def sum(a,b)
  result = 0
  (a..b).each do |number|
    result += number
  end
  puts result
end

# メソッドの呼び出し
sum(1,5)

# 実行結果 15

定義したa と bに対応しているのが、呼び出し元の1 と 5です。

引数の順番を間違えると、予期しない結果が起きてしまうので注意です。

また、メソッドの呼び出しのかっこは省略できます。

# メソッドの定義
def sum(a,b)
  result = 0
  (a..b).each do |number|
    result += number
  end
  puts result
end

# メソッドの呼び出し
sum 1,5

# 実行結果 15

メソッドの返り値(return)について

これまでは、メソッド内で処理したデータを表示(puts)していましたが、メソッド内でゴニョゴニョした結果を変数に格納したい場合はreturnを使用します。

# メソッドの定義
def sum(a,b)
  result = 0
  (a..b).each do |number|
    result += number
  end
  return result
end

# メソッドの呼び出しと変数に格納
number1 = sum(1,5)
number2 = sum 1,5

# 実行結果 両方とも15
puts number1
puts number2

また、メソッド内のreturnは省略可能です。なぜなら、メソッド内の最後の行はリターンするものと決まっているので。

# メソッドの定義
def sum(a,b)
  result = 0
  (a..b).each do |number|
    result += number
  end
  result
end

# メソッドの呼び出しと変数に格納
number1 = sum(1,5)
number2 = sum 1,5

# 実行結果 両方とも15
puts number1
puts number2

メソッドを使う時の注意点

注意点1_メソッド名の命名規則

  • 1.1文字目は英文字かアンスコ(_
  • 2.2文字目以降は英数文字かアンスコ(_

この決まりを守らないとエラーになります

注意点2_順番

メソッドの定義は、メソッドの呼び出しの前である必要があります。これも守らないとエラーになります。

参考

ryosuketter
偏差値50台 大学理系院卒、一部上場企業でWebエンジニア(3年目)半人前レベル。普通の34歳おっさんでも頑張ったら一人前のフロントエンドエンジニアになれるのか?の検証 Qiita です。
https://note.com/ryosuketter
life-a-tm
人生のイベントや日常生活に密着した比較サイト、情報サイト等様々なウェブサービスを企画・開発・運営
https://life.a-tm.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした