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は指示に従ってサクサク進めることが出来ちゃうけど

流してやってたらダメ!ってことですよね。

とは言え拘り過ぎても進まなくなると思うし

たまたま気づけてラッキー✨と思っておりますテヘペロ

タグ: Progate、学習サイト