0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Rubyにおけるputsとreturnの違い

Last updated at Posted at 2023-04-11

Rubyにおけるputsとreturnは
何か似てる感じがして分かりにくいですよね:disappointed_relieved:

結論としてputsとreturnの違いは
戻り値を必要とするか否かです:point_left:

そして、戻り値というのは
何らかの処理結果で返される結果のことをいいます

使用する目的としては以下の通りになります!

puts:文字列を出力する為に使う
return:一連の処理結果から戻り値を返すこと

ちなみにというのは、
数値だけでなく文字列、真偽値、配列、ハッシュなど
あらゆるものを含みます!

さて、戻り値を返せないputsを使おうとすると
どうなってしまうのでしょうか??

例えば、このようにreturnの代わりにputsを使って
年齢に応じて運賃を出す処理を書いたとします

ちなみに年齢を入れる引数は数値の8とします

#大人は12歳以上で200円 こども12歳未満6歳以上で100円  幼児は6歳未満で無料
def train_fare(age)
  if age >= 12
    puts '大人料金になります'
    puts 200
    
  elsif age < 12 && age >= 6
    puts 'こども料金になります'
    puts 100
  else age < 6
    puts '6歳未満は幼児で無料となります'
    puts 0
  end
end

#引数として年齢を入力する(age)には8を入れる
puts "東京駅から新宿駅までの料金は#{train_fare(8)}円です"

出力結果 #=> 
こども料金になります
東京駅から新宿駅までの料金は円です

このように料金の数値の値が
何も出力されませんでしたね、、

これはtrain_fareという関数の中で
returnではなく、値を返すことが出来ない
putsを使ったのが原因です🙇‍♂️

putsを使ったことにより
train_fareの関数の処理結果の数値を返すことが出来ず
結果として#{train_fare(8)}の値が
nilという存在しないものに
なってしまいました、、:frowning2:

ですので、putsではなくreturnを使いましょう

#大人は12歳以上で200円 こども12歳未満6歳以上で100円  幼児は6歳未満で無料
def train_fare(age)
  if age >= 12
    puts '大人料金になります'
    return 200
  elsif age < 12 && age >= 6
    puts 'こども料金になります'
    return 100
  else age < 6
    puts '6歳未満は幼児で無料となります'
    return 0
  end
end

#引数として年齢を入力する(age)には8を入れる
puts "東京駅から新宿駅までの料金は#{train_fare(8)}円です"

出力結果 #=>
こども料金になります
東京駅から新宿駅までの料金は100円です

このようにreturnを使うことによって
引数に入力した数値が処理結果として正しく返され
料金の数値がしっかり表示されました:relaxed:

以上になります。お疲れ様でした!

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?