Ruby学習コースⅠ~Ⅲ|メモ|メッソドと引数と戻り値とreturnでの条件分岐
Ruby始めました
JavaScript&jQueryはさっくり目に終わらせて
とうとうRubyコースに入りました。
プログラム感あるよね付いて行けるかな?!
とドキドキならくだ🐫でしたが
JavaScriptをやっていたおかげかそこまで躓くこともなく進めております。
まぁ言っても初歩の初歩だもんね。
🐫頑張る。
ちょっと悩んだreturnでの条件分岐
こうすれば出来るっていうのは分かったけど
なんで出来るのかが良くわからなかったreturnでの条件分岐ですが
メモをノートに纏めていたら突然ストンと納得したので纏めてみます
その前にメソッドと引数と戻り値についてさらっと復習
メソッド
繰り返し同じ処理をするときなどに便利な機能
def(メソッドの実行を宣言して) メソッド名を決めて 内容(処理)を書いて end(閉じる)
呼び出す(実行)
def wallet(walletと言う名前のメソッドを宣言)
#ここから処理の内容
puts “私の財布です” (私の財布です と出力)
#ここまで処理の内容
end(メソッドの宣言を修了)
wallet(”私の財布です”と出力するように設定されたwalletと言う名前のメソッドを呼び出す)
↓出力
私の財布です
引数
メソッドを呼び出した時に値を設定して処理に代入(引数展開)できる便利な機能
複数設定することもできる
→複数の引数がある時、値の並びは引数の並びと同じになるが
引数の数が多くなると分かりづらくなるのでキーワードとしてセットする
def wallet(bills: , coins:) (bills とcoinと言う2つの引数をセット)
puts “私の財布です”
puts “紙幣で#{bills}円あります” (引数billsを展開)
puts “硬貨で#{coins}円あります” (引数coinsを展開)
end
wallet(bills: 12000 (引数billsに12000を渡す), coins: 372(引数coinsに372を渡す))
wallet
↓出力
私の財布です
紙幣で12000円あります (billsに渡された12000が代入されている)
硬貨で372円あります (coinsに渡された372が代入されている)
戻り値
呼び出し元に値を返す
def wallet(bills: , coins:)
return bills + coins
end
sum = wallet(bills: 12000, coins: 372)
(walletに12000を渡したdillsと372を渡したcoinsを足して返す)←これをsumに代入
puts “私の所持金は#{sum}円です”
↓出力
私の所持金は12372円です
真偽値を返すreturn
条件式をreturnの値にすると呼び出し元の値の真偽値を返してくる
※真偽値を返すreturnを使う場合にはメソッド名の末尾に?を付ける
def budget?(wallet)
return wallet >= 10000(条件式 walletは10000以上)
end
puts budget?(8000)(呼び出し部分 walletに渡す値は8000)
(条件を満たさない)
↓出力
falst(条件を満たしていればtrue)
さらさらっとですがこんな理解です。
returnの特性と複数のreturnを組み合わせた条件分岐
returnは戻り値を返すだけではなく
メソッドの処理を終わらせることが出来る為
if文と組み合わせて条件分岐を作ることが出来る
よくわからないので例に沿って考えてみる
def budget(wallet)
if wallet >= 10000 (walletが10000以上なら)
return “買い物して良い” (買い物して良い を返す)
end
return “我慢しましょう” (我慢しましょう を返す)
end
puts budget(12000)
↓出力 walletが10000以上なのでreturn”買い物して良い”が実行され処理が終了する
処理が終了しているためreturn”我慢しましょう”は実行されない
買い物して良い
puts budget(8000)
↓出力 walletが10000以下なのでreturn”買い物して良い”は返らず処理が続く
return “我慢しましょう” が実行される
我慢しましょう
初め、何が引っ掛かったのかと言うと
endの後なのに処理が続くの?と言うところ。
ちょっと落ち着いて考えればわかる事なんだけど
return “我慢しましょう”の前についているendはif文(下線部)を閉じるendで
メソッド自体を閉じるendではないんですね。
なぜか、手書きで、メモではなくてノートに清書するまで気づきませんでした。
らくだ🐫はもっと、スコープと言うものを意識した方が良さそうです。
あと、Progateは指示に従ってサクサク進めることが出来ちゃうけど
流してやってたらダメ!ってことですよね。
とは言え拘り過ぎても進まなくなると思うし
たまたま気づけてラッキー✨と思っておりますテヘペロ