【Ruby Silver】RExで論理演算子問題を解いていて感じたこと
はじめに
現在Rubyの勉強のために、RExで毎日数問解くようにしています。論理演算子の問題を解いている際、 RExの回答で説明が難しいなと感じたところがありました。しかし別資料で論理演算子の説明を確認した際、Rexの回答の説明の意味がやっと理解できました。
一つの資料のみではなく、複数の資料を参考にし自分の言葉で説明できるまで理解を深めなければ定着しないと感じたので、今回はこの記事を書いています。
RExで解いた論理演算子の問題
次のコードを実行するとどうなりますか
a1 = [1,2,3]
a2 = [4,2,3]
p a1 || a2
という問題です。答えは[1, 2, 3]
となります。
RExの回答では補足事項として、下記の記載がありました。
論理演算子を使用した式では、「最後に評価したオペランドの値」を返します。
&& 演算子と || 演算子の違いは右辺が実行されるかどうかです。
|| 演算子は
左辺が true の場合、右辺は実行しません。
左辺が false の場合は、右辺は実行します。
&& 演算子は
左辺が true の場合、右辺は実行します。
左辺が false の場合は、右辺は実行しません。
この回答を見た時、「これを暗記しないと、今後同じような問題にあったときに解けなさそうだな...」と正直感じてしました。
どのようにこの問題と向き合ったか
現在通っているプログラミングスクールのRubyの資料の中で、論理演算子を下記にように説明していました。
&&演算子は、左右の値が両方ともtrueの場合にtrueを返します。
また、捉え方として左辺がtrueの場合に右辺を返すと考えることもできます。
||演算子は、左右の値のどちらかがtrueの場合にtrueを返します。
また、捉え方として左辺がfalseの場合に右辺を返すと考えることもできます。
この説明文を見て、暗記しなくてもこれなら解けそうだと感じました。
少し脱線しますが、現在読んでいる、SOFT SKILLSの中でも、学習方法に関して下記のことが書かれていました。
ステップ4: 参考資料を見つける
学生時代、特定のテーマについてレポートを書かなければならなかったときのことを思い出そう。1冊の参考文献だけでそこからすべての情報を引き出してレポートを書き上げたらどうなっただろうか。レポートを返されるとき、「不明」の文字が付けられていただろう。だとすれば、今何かを学ぼうとしているときに、私たちの多くがまったく同じことをしているのはどうしてだろうか。(中略)あるテーマについての1冊の本を読むのではなく、多くの異なる参考資料を集めて学習に役立てよう。
「SOFT SKILLS」 P162より抜粋
今回この問題を解いていて、まさにその通りだと感じました。
RExの回答だけではピンときていませんでしたが、別の角度から見たら理解することができました。
1つの情報源のみで判断するのではなく、複数の資料をもとに考えていくこと。
基本的なことですが、改めて重要だなと感じたので今回の記事にしました。
ありがとうございました。
Discussion