25
15

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 5 years have passed since last update.

[Ruby]putsとreturnの違いをまとめてみた

Last updated at Posted at 2019-04-28

Rubyを勉強してたら、putsとreturnの違いが分からなくなってきたのでまとめてみました。

putsとは

引数のオブジェクトを文字列に変換し、改行を加えて標準出力に出力します。 引数は複数指定できます。 ... Ruby 1.9 引数が nil のときは、Ruby 1.8では "nil" +改行を出力しますが、Ruby 1.9では空行のみ出力します。

putsは引数の文字列を表示させるだけってことですね。

puts 'Hello World' #=> Hello World

returnとは

returnの後に書いた値をメソッドの戻り値とし、メソッドを終了させる

returnは値を返すだけで表示させる訳ではないということですね。

return文で値を返し、それをputsで表示させるということでしょうか。

def greet
  retun 'Hello World'
end #=>

何も表示されません。
returnは戻り値を受け取るんだけで表示させることはありません。

def greet
  return 'Hello World'
end 
puts greet #=> Hello World

関数で受け取った結果をputs~で表示させています。

また、returnは省略可能です。
省略した場合は最後に評価された値が戻り値になります。

def greet
  'Hello World'
end 
puts greet #=>Hello World
def greet
  'Hello'
  'World'
end 
puts greet #=>World

省略できるならreturnいらなくない?って思いますが、returnにはメソッドを終了させることも可能です。
メソッドから脱出したい時に使います。

def greet(name = '')
  return 'nameが空です' if name.empty?
  "Hello #{name}!!!"
end
puts greet #=>nameが空です
def greet(name = '')
  return 'nameが空です' if name.empty?
  "Hello #{name}!!!"
end
puts greet('Keisuke') #=>Hello Keisuke!!!

1つ目の例文はif文が真なのでreturn文を返しメソッドから脱出しました。
2つ目の例文はif文が偽なのでreturn文は表示されず、二文目が表示されました。

もし、returnを書いていなかったら

def greet(name = '')
  'nameが空です' if name.empty?
  "Hello #{name}!!!"
end
puts greet #=> Hello !!!

最後に書いた文が評価されるのでif文が真偽どちらだろうと1行目は表示されません。

まとめ

putsは出力する時に、returnは戻り値を受け取る時やメソッドから脱出したい時に使います(省略化したら脱出は不可)。

25
15
0

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
25
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?