1
1

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

[Rails]時々見かけるメソッド内の「? :」の組み合わせ

Posted at

#概要
初学者にとって難しいのは知らないメソッド、記法が出てきたときだと思います。
筆者も教材をやっているときに出くわしそこでエラーがでるとひえーっとなってしまいます。

#メソッド内のに:と?が記載されていて
さて、今回でくわした記法は ?: です。下記のような感じです。

hoge.rb
def hoge
  hoge = params[:hoge].present? ? params[:hoge] : ""
end

こんな感じですよね。
え、わたし:(コロン)てシンボルとかハッシュにしか使ったことないよ?これハッシュ関係ある?となりあたふた。
でもメソッド内のに:と?が記載されていて明らかに何か意味してるよね、と...。

#条件演算子
調べたところ、
「条件演算子(三項演算子とも)」だそうです。え、そうなの?笑
三項演算子知っているしそうなら解読すごく簡単じゃん!拍子抜けです。
というか条件分岐はif文でなんとかなると思ってました。

##使い方
式1? 式2 : 式3
「式1の結果次第で式2か3を返す」という意味なんですね!!
if文でいうなら
if 式1 then 式2 else 式3 end
と同じです。if文だと行が増えるので可視性を高めるためにも使われているのかなと納得しています。
なので上記のコードをif文に落とし込むとこんな感じです。

hoge.rb
def hoge
  if hoge.present?
    hoge = params[:hoge]
  else
    hoge = ""
  end  
end

間違いがあればご指摘いただけますと幸いです。以上!

#参考文献
https://www.javadrive.jp/ruby/if/index10.html
https://docs.ruby-lang.org/ja/latest/doc/symref.html

今回の出来事は調べるときどうググったらいいのかわからないパターンでした。
"rails :" "rails コロン" "rails : ?" とか調べましたが引っかかるのはハッシュ関連が多かったですね。
結局"rails コロン メソッド"で検索かけらうまいこと見つかりました!

1
1
2

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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?