1

Ruby 言語に不慣れな人 (私自身など) が Ruby を学ぶのに役立つクイズ アプリケーションを作成しようと考えています。

ユーザーに質問を促し、Interactive Ruby Shell (IRB) セッションを開始し、前提条件を設定し、ユーザーがシェルを操作できるようにし、投稿条件をチェックして、ユーザーはプロンプトに従い、質問に正しく答えました。たとえば、ユーザーは、曜日を含む 2 つの配列を組み合わせるように求められる場合があります。シェル セッションが開始され、前提条件が設定されます。

days1 = ["Mon", "Tue", "Wed"]
days2 = ["Thu", "Fri", "Sat", "Sun"]

その後、ユーザーはシェルとやり取りできるようになり、おそらく次のようになります。

days = days1 + days2
=> ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]

次に、プログラムは事後条件を評価して、2 つのアレイが結合されたことを確認します。プロンプトが特定の方法で達成する必要があると指定した場合、プログラムはタスクがどのように達成されたかを具体的に調べる必要がある場合もあります。

IRB とのやり取りを処理する最善の方法は何ですか? 1 つの考えとしては、Expect を使用することも考えられますが、より良い方法や、Ruby のみを使用する方法がないかどうか疑問に思っていました。私は車輪の再発明を考えているわけではないので、このようなプログラムが既に利用可能な場合は、カスタム開発を行う代わりにそれを使用することにオープンです。

4

1 に答える 1

0

あなたはirbの代替案であるpryを見るかもしれません。詮索好きであなたの仕事は私にとってより簡単に見えます。

require 'pry'

days = nil
days1 = ["Mon", "Tue", "Wed"]
days2 = ["Thu", "Fri", "Sat", "Sun"]

binding.pry :quiet => true

if days == (days1 + days2)
    puts "Congratulations!!!"
else
    puts "You did something wrong"
end

唯一の問題は、バインディングコマンドが、バインディングポイントの周囲のコンテキストを出力するwhereamiコマンドを自動的に呼び出すことです。キャンセルする方法はまだわかりません。手すりのおかげで修正されました。

于 2012-05-05T18:09:56.377 に答える