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)
-
前の記事
node.js 少数の切り捨てを行う「Math.floor」と「~~」と「|」のパフォーマンスを計測する 2020.12.23
-
次の記事
javascript classList.replaceを使用してクラスを入れ替える 2020.12.24
コメントを書く