-1

クラスのインスタンスを作成するために読み取って解析する .csv があります。.csv の最初の行から返されたテキストの文字列にちなんでクラスに名前を付けたいと考えています。クラスを手動で作成することはできますが、row[0] を読み込んで変数に名前を付けたいと考えています。

例えば。

CSV.foreach("banks.csv", :headers => true) do |row|

    ***contents of row[0]*** = Bank.new(row[0], row[1], row[2], row[3], row[4])

たとえば、row[0] == "Bank_of_America" の場合、コードは次のようになります。

    Bank_of_America = Bank.new(row[0], row[1], row[2], row[3], row[4])

instance_variable_set を使用して同様のトピックに関する他のいくつかの返信を読みましたが、指定されたコードを機能させることができません。

アドバイスをよろしくお願いします!

編集:以下が機能しました。

instance_variable_set("@#{row[0]}", Bank.new(row[0], row[1], row[2], row[3], row[4]))
4

1 に答える 1

1

次のようにして、インスタンス変数を動的に作成できます。

x = 10
 # => 10
instance_variable_set("@the_number_#{x}", x)
 # => 10
@the_number_10
 # => 10

今すぐ交換でき"@the_number_#{x}"ますrow[0]

編集:申し訳ありませんが、インスタンス変数に関する質問の最後の部分を読んでいませんでした。では、それらを機能させることができないとはどういう意味ですか? 何らかの例外が発生するのか、それとも正しい値に設定されていないのか。動かないコードを教えてください。

于 2013-10-08T19:10:40.200 に答える