ruby初心者です。
最近、ruby on railsで書かれたソースを引き継ぎ解析を行っています。
その中で、以下のような構文が出てきました。
=========================================
num = 0
bool = false
vals = ''
puts 'start'
num == 0 && bool &&
if vals
puts 'true'
else
puts 'false'
end
puts 'end'
=========================================
上記プログラムを実行すると、if ~ end までが実行されませんでした。
そこで、変数boolをtrueに変更して再実行したところ、if文が実行されました。
そこで私は、上記プログラムは以下と同値であると解釈しました。
======================================
(省略)
if num == 0 && bool
if vals
puts 'true'
else
puts 'false'
end
end
=======================================
以上を踏まえて・・・
1.私の解釈は正しいでしょうか?
2.間違っている場合、正しい処理の解釈を教えていただけますでしょうか?または参考URLを教えていただけますと助かります。
文の最後に"&&"がついている文を見たことがなく、ネットで調べても
正解らしいものが掲載されていなかったので質問させていただきました。
拙い説明で申し訳ありませんが、よろしくお願いいたします。
No.1ベストアンサー
- 回答日時:
演算子式 - Rubyリファレンスマニュアル
http://www.ruby-lang.org/ja/man/html/_B1E9BBBBBB …
&& はショートサーキット論理演算子の一種なので、
式A && 式B
としたときは、
まず左辺の式Aが評価され、
その結果が真であった場合のみ右辺の式Bも評価されます。
もし、式Aが偽であれば式Bは評価(実行)されません。
そのため、式Aが真の時にのみ式Bを実行したいときに
上記の様な書き方をすることが可能です。
また、rubyにおいてifは式なので式Bはif式でも大丈夫です。
(C言語などとは違ってrubyのifは「値を持つ式」だったりします。)
# 合ってるか間違ってるかはあえて明言しませんでしたがこの説明でそれは判断できますよね?
なお、ショートサーキットはPerlで割と良く出てきます。
Werner様
早速の回答ありがとうございました。
C言語とPHPしか主に触っていなかったので、まず文法に面食らってしまっていました。。。
ifも式と考えれば自然な書き方ですね(慣れるまで大変そうですが…)
明解な回答に感謝いたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- Java java 引数 戻り値のあるメソッド 3 2023/02/12 06:23
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) [Excel VBA] このコードでは行の挿入や行の消去をすると13のエラーが出てしまう。 3 2022/12/09 00:29
- Visual Basic(VBA) 【VBAエラー】Nextに対するForがありません 対策について 5 2022/11/21 21:26
- Excel(エクセル) エクセルVBAでオブジェクトが必要です 2 2022/09/10 16:37
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- C言語・C++・C# C言語でif文が予想と違う動きをする件について7 4 2023/03/20 00:26
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
1、Rstudioで回帰直線を求める...
-
(再質問)エクセルのマクロボ...
-
ビーリアルのユーザー名を変え...
-
初心者 パイソンプログラム
-
三項でたとえば交換って
-
パソコンのスクリーンセーバー...
-
pandasでsqlite3にテーブル作成...
-
100万件越えCSVから条件を満た...
-
Rubyでローカルにあるファイル...
-
情報の表現。()内がどうしても...
-
VBA メモ帳の上書き保存がしたい
-
NCルータープログラム学習方法
-
区切り文字の調整方法について...
-
WSLのUbuntuで、Railsのインス...
-
回復ドライブとインストールメ...
-
C++のCreateFile関数で、ASCII...
-
なんで if __name__ == "__main__"
-
クリスタルレポートで困ってい...
-
パイソンのクラスについて
-
教えてください
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Rubyのpopen3について
-
rubyの構文(&&を用いた条件分...
-
Ruby / passenger のインストー...
-
システムエンジニアの適正について
-
小文字wと大文字Wの区別
-
初心者 パイソンプログラム
-
プログラミング講師はまだ需要...
-
VB.NETで階乗を求めるプログラ...
-
web上のhtmlファイルから文字デ...
-
RubyでNo such file or directo...
-
プログラミング言語で大文字と...
-
Rubyの.soについて
-
九九の表示
-
ruby の Σ計算
-
バーコードのチェックデジット...
-
CかC++どちらを覚えるべきですか?
-
We're sorry, but something we...
-
ruby.exeとrubyw.exeに違いがあ..
-
WinXP+Apache2にerubyを入れま...
-
大学生のプログラミングバイト...
おすすめ情報