Ruby メソッドを定義する

  • 作成日 2020.12.23
  • 更新日 2022.08.19
  • Ruby
Ruby メソッドを定義する

Rubyで、メソッドを定義するサンプルコードを記述してます。rubyのバージョンは2.7.2を使用してます。

環境

  • OS windows10 pro 64bit
  • ruby 2.7.2p137

メソッド定義

rubyではメソッドは、以下の構文で定義可能です。

def メソッド名
  処理
end

メソッドを使用して「Hello World」を出力してみます。

def hello
  p "Hello World"
end

# メソッド呼び出し
hello
# "Hello World"

メソッドを定義する前に、メソッドを呼び出すことはできません。

# メソッド呼び出し
hello
# undefined local variable or method `hello' for main:Object

def hello
  p "Hello World"
end

引数定義

引数は、以下のように定義します。

def メソッド名(引数1,引数2,...)
  処理
end

以下は引数を使用したサンプルコードとなります。

def hello(str)
  p "Hello" + str
end

# メソッド呼び出し
hello("World")
# "HelloWorld"

デフォルト値を設定することも可能です。

def hello(str = "World")
  p "Hello" + str
end

# メソッド呼び出し
hello
# "HelloWorld"

キーワード引数も使用できます。

def hello(str:)
  p "Hello" + str
end

# メソッド呼び出し
hello(str: "World")
# "HelloWorld"

splat引数も使用できます。

def hello(*args)
  p args
end

hello("hoge")
# ["hoge"]

hello("hoge", "foo", "bar")
# ["hoge", "foo", "bar"]

戻り値定義

戻り値はreturnで定義可能です。

def hello
  return "Hello World"
end

p hello
# "Hello World"

「;」使用

「;」を使用して、以下のように記述することも可能です。

def hello(str);p "Hello" + str;end

# メソッド呼び出し
hello("World")
# "HelloWorld"

アロー演算子

また、メソッドはアロー演算子を使用して以下のように簡略化して記述することも可能です。

引数なし

hello = ->() { p "Hello World" }

hello[]
# "Hello World"

hello.()
# "Hello World"

hello.call
# "Hello World"

# 括弧は省略可能
hello = -> { p "Hello World" }

hello[]
# "Hello World"

引数あり

hello = ->(x) { x * x }

p hello[3]
# 9

# 括弧は省略可能
hello = ->x { x * x }

p hello[3]
# 9

パフォーマンスは、アロー演算子の方が少し悪いです。

【参考】 通常のメソッドとアロー演算子を1000万回呼び出した結果

                 user     system      total        real
#def         4.328000   0.000000   4.328000 (  4.314060)
#= ->        5.953000   0.000000   5.953000 (  5.964747)