このチャプターではメソッドとは何かを学びます。 メソッドとは、複数の処理を1つにまとめて扱いやすくした塊のことです。
例えば電卓を思い浮かべてください。もし電卓が足し算専用、引き算専用、割り算専用、掛け算専用と計算の種類ごとに分かれていたら場所もとるし、(2+4)×3などの計算をする場合に、最低でも計算機が2台必要になります。
Rubyにおけるメソッドとは電卓のようなものです。 複数の処理(足し算、引き算、掛け算、割り算)を1つ(1台)にまとめて扱いやすくした塊(電卓)というイメージです。
Rubyのメソッドはdefとendの間に実行したい処理を記述します。
def メソッド名
実行したい処理
end
では、helloと入力したら、「ハロー」と帰ってくるメソッドを作ってみましょう。
def hello
puts "ハロー"
end
helloというメソッドはハローという値がputs(返される)、という意味のコードです。
testフォルダに新規でmethod.rbファイルを作成しましょう。
ファイルができたら、上記のhelloメソッドを追記してください。
メソッドができたら、次はファイルに指示を入力します。
「helloと入力したら、ハローと返してね」というメソッドの為、ファイルにhelloと入力しターミナルで処理を実行します。
ターミナルに ハロー と結果がかえってきているのがわかります。
引数とは何らかの処理をするときに「このデータを使ってね」と渡すデータそのもののことです。
ミックスジュースを作る(果物や野菜を細かく切ってから、ミキサーにかけるという複数の処理をまとめたメソッド)を実行する場合に、「この野菜と果物を使ってね」と渡される材料が引数です。
メソッドのコードは
def メソッド名
実行したい処理
end
でしたね。
では、消費税込みの計算をしてくれるsyouhizeiというメソッドの場合はどのようなコードになるでしょうか。
まず、引数を使ったメソッドでは
def メソッド名(引数)
とメソッド名の後ろに(引数)をつけます。 消費税の計算をするときには「priceというデータを使ってね」と指定してみましょう。
コードの1行目は
def syouhizei(price)
となります。
ではコード2行目の実行したい処理はどうなるでしょうか。
消費税の計算はprice(価格)に1.08をかければよいので
puts price * 1.08 #priceという引数に1.08をかけてその値を返しなさい
という計算式になります。
消費税込みの計算をしてくれるsyouhizeiというメソッドは
def syouhizei(price)
puts price * 1.08
end
となります。
では、テスト用のmethod.rbファイルで処理を実行してみましょう。
まずはファイルに以下のメソッドを追記します。
def syouhizei(price)
puts price * 1.08
end
改行し、実行したい処理を追加します。
syouhizei(100)
次にターミナルで $ ruby method.rb を実行すると処理結果が表示されます。
syouhizei(price)のprice部分の数字を変えて、処理結果が変化することを確認してください。
メソッドは、複数処理を1つで実行してくれるコードの塊です。そのため、メソッドに含まれる引数(メソッドで使用するデータ)が複数になることもあります。
その場合のコードは
def メソッドの名前(引数1、引数2…)
実行したい処理
end
となります。
具体的に見ていきましょう。
AとBという商品の税込み価格をそれぞれ表示させるメソッドを作ります。
def syouhizei(priceA,priceB)
puts "priceA は#{ priceA * 1.08}円、 priceBは #{ priceB * 1.08}円 "
end
となります。
#{ }は、文字列の中に変数などを埋め込むことができる書き方です。
少し複雑なメソッドについても確認しておきましょう。
例えば、会員制の商品販売サイトを運営しているとします。 ログインしてきたユーザーが商品を購入すると「〇〇さん、商品の税込み価格は△△円です」と表示されるメソッドを作りたい場合のコードを考えてみましょう。
この場合、実行したい最終的な処理は「〇〇さん、商品の税込み価格は△△円です」と表示することですね。
メソッド名は先ほどと同様にsyouhizeiとすると
def syouhizei(引数)
puts "〇〇さん、商品の税込み価格は△△円です"
end
となります。
ではこの場合の引数(データ)は何になるでしょうか。
引数とは何らかの処理をするときに「このデータを使ってね」と渡すデータそのもののことでしたね。
今回の場合は、毎回固定で表示されているさん、という部分と 商品の税込み価格は 円ですという部分はデータを引用する必要がないため、 ログインユーザー名(〇〇)と、商品の税込み価格(△△)が引数ということです。
コードは
def syouhizei(name,price)
puts "〇〇さん、商品の税込み価格は△△円です"
end
となります。
しかし、priceは税込み価格ではありません。商品ごとに価格が異なる為、税込み価格は毎回変動します。
その為、最終的な処理の前に
zeikomi = (price * 1.08).round(0)
とzeikomiという変数を定義しておきます。
※zeikomiという名前の箱に、price * 1.08(商品価格×1.08)という値を代入しています。
また、最後の
.round(0)
ですが、これは小数点以下の桁を()の中の桁で四捨五入してねという関数です。
今回は
.round(0)
なので小数点以下の四捨五入は不要という意味です。
ではここまでの処理を組み合わせてコードを作ってみましょう。
def syouhizei(name,price)
zeikomi = (price * 1.08).round(0)
puts "〇〇さん、商品の税込み価格は△△円です"
end
最終的に実行したい処理の
〇〇さん、商品の税込み価格は△△円です
には#{ }を使用します。
上記の処理を実行するメソッドは
def syouhizei(name,price)
zeikomi = (price * 1.08).round(0)
puts "#{name}さん、商品の税込み価格は#{zeikomi}円です"
end
実際にmethod.rbファイルに追記して処理を確認してみましょう。
無料ビデオ講座のお知らせ
Skillhub [スキルハブ]では無料の動画講座を多数公開しています。他校だと数万円するような講座が無料で受講できます。