2017-11-10 6 views
1

オブジェクトクラス内のメソッドを使用してオブジェクトを作成した後で、オブジェクトに属性を追加しようとしています。このコードをdef set_sell_byとdef get_sell_byメソッドに入れたいと思います。ですから、最後に、apple.set_sell_by(10)を実行して、後でapple.get_sell_byを実行して、そのアイテムが5日以内にそれを販売するかどうかを確認して、その値を取得したいと思います。メソッド(Ruby)を使用してオブジェクトを作成した後に新しい属性を追加する

class Grocery_Inventory 
 
\t attr_accessor :product, :store_buy, :quantity, :serial_number, :customer_buy 
 
\t def initialize(product, store_buy, quantity, serial_number, customer_buy) 
 
\t \t @product = product 
 
\t \t @store_buy = store_buy 
 
\t \t @quantity = quantity + 5 
 
\t \t @serial_number = serial_number 
 
\t \t @customer_buy = customer_buy 
 
\t end 
 
\t 
 
\t def get_product_name 
 
\t \t p product 
 
\t \t self 
 
\t end 
 
\t 
 
\t def get_cost_customer 
 
\t \t p "$#{customer_buy}" 
 
\t \t self 
 
\t end 
 

 
\t def get_product_quantity 
 
\t \t p "You have #{quantity} #{product}" 
 
\t \t self 
 
\t end 
 

 
\t def set_sell_by 
 
\t \t #some code... 
 
\t \t self 
 
\t end 
 

 
\t def get_sell_by 
 
\t \t if sell_by < 5 
 
\t \t \t p "You need to sell this item within five days." 
 
\t \t \t self 
 
\t \t else 
 
\t \t \t p "Item doesn't currently need to be sold." 
 
\t \t \t self 
 
\t \t end 
 
\t end 
 
end 
 

 
apples = Grocery_Inventory.new("apples", 1.00, 5, 123, 0.25) 
 
apples.get_product_name 
 
apples.get_cost_customer 
 
apples.get_product_quantity

+0

あなたはすでに 'initialize'メソッドであなたが尋ねていることを*正確に*行います。だから、明らかに*可能です。また、あなたはそれを試して何が起こったのですか? –

答えて

2

ルビーは、この点では非常にずさんです。 @で変数にアクセスするだけで、存在しなければ作成されます。

def set_sell_by 
    @sell_by = value 
    self 
end 
+0

ちょうど私が必要なもの、ありがとう。 –

+1

より正確に言うと、*すべての*オブジェクトは*常に*空に作成されます。 Rubyでコードを実行する唯一の方法は、(ほとんど)ほとんどすべての*インスタンス変数*を使用してメソッドを使用することです。*インスタンス変数をオブジェクトに追加する*可能な方法は*メソッドを使用してオブジェクトが作成された後に追加されます。通常、これらのメソッドは ' ='または 'initialize'と呼ばれます。 –

関連する問題