4

Rubyで小さなコマンドラインスクリプトを作成する作業。ユーザーがレストランに関連するいくつかの情報を提供すると、計算された情報が返されます。

現在、私は次のコードを持っています:

class Restaurant
 attr_accessor :name :type :avg_price
 def initialize(name, type, avg_price)
   @name = name
   @type = type
   @avg_price = price
 end
 end

質問1

メソッドを使用して、、、を宣言した場合、attr_accessorsInitializetypeメソッド が必要なのはなぜですか?入力した値を設定する必要があるからですか?pricename

質問2

RestaurantListコード内に続くと呼ばれるサブクラスがあり< Arrayます。これの機能は何ですか?

Arrayクラスはコードで定義されていませんか?それはルビーのビルトインクラスと呼ばれていArrayますか?もしそうなら、それは正確に何をしますか?

4

1 に答える 1

5

質問1

このattr_accessorメソッドは、メソッド内のブロックの外部でアクセス可能な変数を宣言するためのショートカットです。

rubyのinitializerメソッドは、誰かがそのクラスの何かを初期化するときに呼び出されるメソッドです。chipotle = Restaurant.new 'Chipotle', 'Mexican', 8.00

質問2

Arrayは確かにRubyに組み込まれているクラスです(一般にRuby標準ライブラリと呼ばれるクラスに組み込まれています。クラスに関するMRI 1.9.3のドキュメントについては、こちらArrayを参照してください。使用するために特別な継承を行う必要はありません。Arrayただし、言語は、文字列、ハッシュ、配列、およびその他の一般的に使用されるクラスなどを継承する必要がないように、マナーで定義されています。

とはいえ、これらは過負荷になる可能性があります。配列のように見えても代替機能を備えたものを見つけても驚かないでください。

その他の注意事項

Rubyプログラミングに取り組むときに覚えておくべきことの1つは、すべてがオブジェクトであるということです。これはよく耳にしますが、最初にダイビングしたときに理解するのは難しいですが、Rubyですべてをクラスにマップして戻すことができることを覚えておくことが重要です。クラスのドキュメントについては、こちらを参照してください。ObjectObject

于 2012-07-27T21:04:03.827 に答える