41943


Rails初心者ですが下記のようなviewファイルがあり、  
ソースコードのis_selected = @registration.plan == planの記号で困惑してます。

これはまず右辺を@registration.planとplanが等しいかどうか計算して、  
値が等しい場合の左辺のis_selectedに代入するというような意味合いでしょうか？

ちなみに=の記号が代入、==の記号が等しいと認識しております。

viewファイル

[code]

    <% is_selected = @registration.plan == plan %>
    
[/code]


CC BY-SA 3.0
2018-02-22T15:18:29.423
41932
2018-02-23T01:58:51.210
20370
question
ruby-on-rails ruby
Railsで使用されている=（イコール）の記号の使い方について教えてください。


>
> これはまず右辺を@registration.planとplanが等しいかどうか計算して、値が等しい場合の左辺のis_selectedに代入するというような意味合いでしょうか？

左辺、右辺と考えるとややこしいです。優先順位の高いところから結合します。質問の式では=より==の方が優先順位が高いのでそこから結合します。

冗長に書くと

[code]

    is_selected = ( @registration.plan == plan )
    
[/code]

こうです。もし仮に=の方が優先順位が高ければ

[code]

    （ is_selected = @registration.plan ) == plan
    
[/code]

こうなります。


CC BY-SA 3.0
2018-02-22T23:55:37.653
41940
2018-02-22T23:55:37.653
5793
41932
answer


結論から言うと `is_selected` には `true` か `false` のいづれかの値が入ります。  
等しければ true、異なれば false です。  
先の人も書いていますが優先順位があるので

[code]

    is_selected = (@registration.plan == plan)
    
[/code]

と同じだと考えれば分かりやすいと思います。

最終的には is_selected を求めているので、これは名前からしても  
「選択されているのか?否か?」を保持したいのだと思います。

例えばそのソースコードの後の方で

[code]

    if is_selected
      # ...選択されている場合の処理
    end
    
[/code]

と書いてもいいですし、変数を使わずに

[code]

    if @registration.plan == plan
      # ...選択されている場合の処理
    end
    
[/code]

と書いても同じ意味になります。

参考: <https://docs.ruby-lang.org/ja/latest/class/Object.html#I_--3D--3D>


CC BY-SA 3.0
2018-02-23T01:58:51.210
41943
2018-02-23T01:58:51.210
7208
41932
answer