私は初めて Ruby でプログラムを作成しています (私は RubyMine を IDE として使用しています)。以前は主に Java でコーディングしていました。
Java でプログラミングするときは、コードに機能を追加するたびにコードを定期的に「実行」して、それが適切に機能することを確認していました。
Rubyでそれをやろうとしていますが、少し苦労しています。
プログラムのメニューとして使用する次のクラスがあるため、ユーザーがプログラムを実行するときに開始する場所です。
class Application
# To change this template use File | Settings | File Templates.
def initialize
mainMenu
end
def navigateTo(what)
what.new.display
mainMenu
end
def mainMenu
puts "What would you like to do?
1: Add module to a scheme
2: Remove module from a scheme
3: Query modules
4: Modify module
5: Register a student on a scheme
6: Remove a student from a scheme
7: Register a student on a module
8: Remove a student from a module"
case gets.strip
when "1"
navigateTo Module
addModule
when "2"
navigateTo Module
when "3"
navigateTo Module
when "4"
navigateTo Module
when "5"
navigateTo Student
when "6"
navigateTo Student
when "7"
navigateTo Student
end
end
end
ただし、クラスを実行すると、コンソールに実行中であることを示す行が表示されますが、次の行は「プロセスは終了コード 0 で終了しました」です。
これがなぜなのか理解できませんか?Javaにはメインメソッドがあり、プログラムが実行されたときに何をすべきかを常に指示する場所でした...しかし、Rubyで私が知る限り、メインメソッドは必要ありませんか? この場合、これまでに書いたものを実行して、正しく書いたことを確認するにはどうすればよいですか?
*更新**
OK、行に追加しました
Application.new
提案どおり、それは素晴らしいことです。メニューが印刷されるようになりました。メニューからオプション 1 を選択すると、次の行がコンソールに出力されました。
#<Module:0x1bd2c90>What would you like to do?
その後、再度メニューを印刷します。
オプション 1 は、次のようなモジュール クラスに移動する必要があります。
class Module
# To change this template use File | Settings | File Templates.
@@moduleScheme = nil
@@moduleYear = nil
#@moduleTitle = ""
def self.moduleYear
@@moduleYear
end
def initialize(v)
@val = v
end
# Set and get the @val object value
def set (v)
@val = v
end
def get
return @val
end
def addModule
moduleName = Module.new(30)
moduleRefNo = Random(100)
#moduleTitle = @moduleTitle
moduleYear(4)
print "What is the name of the module you would like to add?"
moduleName = gets
moduleRefNo
printf "Which year does the module belong to?"
@@moduleYear = gets
puts "#{moduleName}, belonging to #{@@moduleYear} has been added to the system, with reference number #{moduleRefNo}."
navigateTo Application
end
def addModuleToScheme
moduleName.moduleScheme = schemeName
end
def removeModuleFromScheme
moduleName.moduleScheme = nil
end
def queryModule
end
end
ユーザーがメイン メニューからオプション 1 を選択し、プログラムが Module クラスに移動すると、そのクラスが完全に実行される、つまり、プロンプトがユーザーに表示され、ユーザーがキーボードで入力したものを読み取ると予想していました。次に、行で示されているように、メニューに戻ります
navigateTo Application
私の「addModule」関数の最後に。ただし、何らかの理由で、Module クラスに移動していないか、最後までスキップしているようです。ここで私が間違っていることを誰かが指摘できますか?