プログラムのメニューからオプション 1 を選択すると呼び出される次のコードがあります。
def self.addModuleToScheme
=begin
Create an empty hash for the schemes
=end
schemes = Hash.new()
=begin
Allow user to enter scheme names into a set of variables, and use each scheme name as a hash/ array of modules.
Then allow the user to enter the the modules for each scheme into each of the hashes
Create specific hash elements by using the following line:
schemes = {:scheme1 => scheme1variable, :scheme2 => scheme2variable}
=end
puts "What is the name of the scheme that you would like to add a module to? "
schemeName = gets
=begin
Need to use an if statement here to check whether or not the scheme already exists, if it doesn't, create it, if it does,
tell the user that it does.
=end
if schemes.has_key?(schemeName)
puts "This scheme has already been added "
else
schemes[@noOfModulesInScheme] = schemeName
end
@noOfModulesInScheme + 1
# moduleName.moduleScheme = schemeName
# Print to check that scheme has been added to system:
if schemes.has_key?(schemeName)
puts "@schemeName has been added to the system "
end
現在、コードを実行するとメニューが表示され、このコードが呼び出されるオプション 1 を選択します。次に、モジュールを追加したいスキームの名前を尋ねられます。それを入力すると、プログラムが終了します。
私がやりたいことは、入力したばかりのスキームがシステムに追加されたことを示す印刷物を作成し、プログラムが続行して、スキームに追加するモジュールを尋ねることです。
しかし、文内のハッシュ要素の内容を出力する方法がわかりません。誰かが私を正しい方向に向けることができますか?
編集
それが助けになる場合、これは私のプログラムの他のクラスです(メニューが印刷される場所)
class Application
# To change this template use File | Settings | File Templates.
require './courseModules.rb'
def initialize
mainMenu
end
=begin
def navigateTo(what)
what.new(v).display
mainMenu
end
=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"
CourseModules.addModuleToScheme
when "2"
CourseModules.removeModuleFromScheme
when "3"
navigateTo CourseModules
when "4"
navigateTo CourseModules
when "5"
navigateTo Student
when "6"
navigateTo Student
when "7"
navigateTo Student
end
end
Application.new
end
編集
OK、提案された変更を行いましたが、プログラムを実行すると、「CourseModules: Class (NoMethodError) の未定義メソッド 'add_module'」というエラーが表示されます。
これは、私が持っていた古いメソッド (addModuleToScheme と呼ばれる) をクラスから削除してから、新しいメソッドを作成し、メニューでメソッド呼び出しを更新し、両方のクラスを保存したにもかかわらずです。古いメソッドがなくなったにもかかわらず、私のメニューはまだ古いメソッドを呼び出そうとしているようです... 何かアイデアはありますか?