まず、これらのパラメータ(matrix
,blue
など)が文字列または記号であることを確認します。それは変数なのですが、これまで定義されていなかったように、あなたのコードにはエラーUndefined variable XXX
が発生します。ほかに
、あなたが何か書くとき:
matrix = Car.new(matrix, blue, 4)
を外部に定義されているmatrix
は内部matrix
の前の定義に依存するため、あなたは、環状の定義を持っています。
あなたのコードのようなものでなければなりません:あなたが使用可能な各車に名前を割り当てる必要はありません
cars = [ { model: 'matrix', color: 'blue', doors: 4}, {model: 'fit', color: 'silver', doors: 2}, { model: 'volvo', color: 'silver', doors: 4} ]
puts "What color car do you want?"
response = gets.chomp
cars.each{ |car| puts "We have #{car[:model]} available" if car[:color] == response }
注意してください。これは、利用可能な車が大きなデータベースから読み取られた場合には不可能であるが、上記の解決策(車のデータを格納するためのハッシュの配列)では、これは問題ではない。
これは、「大きな画像のアドバイス」につながります。変更される可能性のあるものをハードコードすることについて考えないでください。
このコードに基づいて実際のアプリケーションについて考えたことがあれば、新しい車を手動で挿入する必要があります。また、最悪の場合はインスタンスの名前を変更する必要がありますそれ?
あなたの車は、あなただけのような何か書きますデータベースから読み込まれている場合、私は、上記のこの方法:get_cars_dataはデータベースを読み込むための方法である
cars = get_cars_data
を。唯一の要件は、このメソッドは各車を:model
,:color
および:doors
のキーでハッシュとして返すことです。
まず、 'matrix'、' blue'、 'fit'、' silver'、 'volvo'などの文字列に注意する必要があります。これらのパラメータはすべて文字列( 'matrix')またはシンボル(: 。たとえば、行列の定義は今のところ、循環的な依存関係に依存しています。 –
ようこそスタックオーバーフロー。私は、リンクされたページ、特に長くても非常に有用なhttp://catb.org/esr/faqs/smart-questions.htmlを含めて、 "[ask]"を読むことをお勧めします。あなたが新しいのであれば私たちは気にしません、よく尋ねられる質問が必要です。 –