Ruby勉強し直してみた 1
Railsエンジニアになってはや1年が経とうとしています。そんな中で最近思うのですが「Railsはわかってきたけれども、Rubyが全くわからない…」 これはやべぇと思い、ここで改めてRubyを勉強し直していきます その備忘録
Rubyの演算子
高い ! && || not 低い and or
優先度があることにより、英語の論理演算子と記号の論理演算子を混在させてしまうと、求めたい結果が変わってしまうことがある
a = true b = false !a || b not a || b
↓このように評価される
(!a) || b not (a || b)
ふむふむ。 また記号の論理演算子と違い、英語の論理演算子同士の場合は優先順位の違いがない。 ()をつかわなければ左から右に順番に評価されていく
a = true b = true c = false # && の方が || より優先順位が高い a || (b && c) # and or は優先順位が同じなので左から評価されていく (a or b) and c
記号と英語の演算子で優先順位に違いがあるため and or を && || の代わりに使おうとすると期待と違う形になるやも
and や or は条件分岐で使うのではなく、制御フローを扱うのに向いている 例えば 「正常なuserであればメールを送信する」という制御フローを実行したければ
user.valid? and send_mail_to user
というように書くことができる
or も「Aが真か? 真でなければBせよ」という制御フローを実現することに向いている
# userが不正だったらエラーメッセージを返す user.valid? or return 'userが不正です'
三項演算子
n = 11 if n > 10 '10より大きい' else '10以下' end => "10より大きい"
こんな風にかける
n = 11 n > 10 ? '10より大きい' : '10以下' => "10より大きい"
シンプルなif/else文であればこの書き方のほうがスッキリと書くことができる
改めてRuby勉強するとおもしろい…!