2013-12-16 172 views
-2

我在這裏做錯了什麼?我試圖獲得銷售稅,並最終將其用於數學計算?Ruby類獲得銷售稅

class Item 
    def initialize(type) 
     @type = type 
    def tax_calc(type) 
     if type.include?("book") 
      sales_tax = 0 
     else 
      sales_tax = 2 
     end 
    end 
end 


puts "what is type" 
type2 = gets 


Item.new(type2) 

puts sales_tax 
+3

你爲什麼不告訴我們它對你的行爲如何,以及與你想要做什麼相比這是怎麼回事? –

回答

1

您當前的代碼是缺少end和你有一個嵌套的方法定義,這是一個非常先進的話題,我沒有看到它使用除了作爲玩具之外,很多時候。

此代碼將返回稅號。

class Item 
    def initialize(type) 
    @type = type 
    end 
    def tax_calc 
    if @type.include("book") 
     @sales_tax = 0 
    else 
     @sales_tax = 2 
    end 
    end 
    def sales_tax 
    tax_calc 
    end 
end 

puts "what is type" 
type = gets 

purchase = Item.new(type) 
puts purchase.sales_tax 

我改變type2簡單type因爲沒有理由擔心鏡像類由於範圍內的局部變量。

這段代碼遠非最佳,但它至少是'工作代碼'。

+0

這是不是一個稅計算好設置?我會讓它變得更好更復雜,這是一個糟糕的基礎嗎? – neil4real

+0

不過,正如錫文提到的那樣,很難確切地告訴你想要做什麼。在這一點上,你顯然是返回稅收分類,而不是計算。你會建立它,並有更多的問題,我確信。所以,我想你是在你的路上。我很積極,你的代碼將會改變,而且這個代碼可能不會像現在這樣並且可能很快就會存在。你有一個好的開始,因爲到目前爲止,我們還沒有看到漂浮物。 :) – vgoff

1

在你的代碼,sales_taxinitialize方法的局部變量。它不在該範圍之外。

下面就來獲得銷售稅的一種方法:

class Item 
    def initialize(type) 
    @sales_tax = type.include?('book') ? 0 : 2 
    end 

    def sales_tax 
    @sales_tax 
    end 
end 

item = Item.new('foo') 
puts Item.new('foo').sales_tax