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

「&.」と「try」と「try!」

Last updated at Posted at 2019-09-06

何番煎じか分かりませんがまとめてみました。

要約

  • 全部レシーバーがnilの場合はnilを返す
  • 「try」はメソッドを呼べる時だけメソッドを呼んでそれ以外の場合はnilを返す => 間違った実装に気づきにくい
  • 「try!」と「&.」は同じ挙動
  • 「try」「try!」はActive Supportのメソッド、「&.」はRubyの演算子

&.

通称ぼっち演算子(& ← 膝を抱えてうずくまっている人に見える)

  • レシーバーがnilの場合はnilを返す
nil&.hoge   # => レシーバーがnilなのでnilを返す
  • それ以外はメソッドを呼ぼうとする
10&.hoge   # => レシーバーがnilではないのでNoMethodError

try

  • レシーバーがnilの場合nilを返す
nil.try(:hoge)   # => レシーバーがnilなのでnilを返す
  • レシーバーにそのメソッドが無い場合もnilを返す
10.try(:hoge)   # => 整数型にhogeメソッドはないのでnilを返す

try!

  • 「&.」と同じ挙動をする

違いは?

  • 「try」はNoMethodErrorにならない

「try」はメソッドを呼べる時だけ呼んでそれ以外はnilを返すようになっています。
場合によるとは思いますがNoMethodErrorになるような間違った実装に気づきにくいのは良くなさそうです。

  • 「try」「try!」はActive Supportのメソッド、「&.」はRubyの演算子

「try」「try!」はRuby単体では使えません。

まとめ

「try!」を使う場面はあまり無さそう(Ruby単体で使える「&.」で良い)

参考

【Ruby on Rails】tryとtry!と&.(ぼっち演算子)の違い
Railsでよく使う、tryメソッドの使い方をまとめてみた

4
0
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
4
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?