Ruby类获得销售税

时间:2013-12-16 02:09:52

标签: 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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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,因为没有理由担心由于范围而镜像类内的局部变量。

这段代码远非最佳,但它至少是“工作代码”。