Visual Studio が出力を提供しないのはなぜですか?
概要
私はRubyの初心者です。今日、私は自宅演習をコーディングしていて、コードのこの動作を発見しました。2番目のケースで同じコードをirbとVSCで実行しようとすると、単一の出力文字列が得られません。
VSC の例は次のとおりです。
def even_or_odd(number)
number.even? ? "Even" : "Odd"
end
even_or_odd(number)
このコードは VSC では出力を提供しませんが、このコードを irb で実行しようとすると正常に動作します。
irb(main):001:1* def even_or_odd(number)
irb(main):002:1* number.even? ? "Even" : "Odd"
irb(main):003:0> end
=> :even_or_odd
irb(main):004:0> even_or_odd(32)
=> "Even"
irb(main):005:0>
ポイントは何ですか?
解決策
VSC と irb は、まったく異なる 2 つのツールです。 Irb は Ruby REPL (読み取り-評価-印刷-ループ環境) です。 VSC は IDE (統合開発環境) です。
irb や pry などの REPL は、対話的に使用するように設計されています。読み取りフェーズでステートメントまたはブロックが完了したと判断すると、それを評価し、すぐに結果を出力し、次の読み取り試行まで繰り返します。これは、構文エラー、論理エラー、概念的な誤解について即座にフィードバックを提供するため、テストや学習に非常に役立ちます。それは、動作するプログラムを実行したい方法ではありません。プログラムのロジックを正しく設定したら、ユーザーが複雑なタスクや反復的なタスクのすべての計算結果を調べて混乱することは避けたいものです。代わりに、実際のコードは明示的な出力ステートメント (Ruby の print、puts、p、pp など) を使用して、いつ結果を表示するかを指定します。
VSC などの IDE は、プログラム全体またはモジュールを作成するためのものです。デバッグ ツールを使用して VSC を REPL モードにすることができますが、デフォルトの動作は、プログラムまたはモジュールの構築、および場合によっては実行を容易にすることです。デバッグ モードではない場合、プログラムの状態は自動表示されないため、結果を確認したい場合は、出力ステートメントの 1 つを使用して、ロジックのどの時点で何を出力するかを明示的に制御する必要があります。 VSC コード フラグメントで、even_or_odd(number) を put Even_or_odd(number) に変更します。