我在这里做错了什么?我正在努力获得销售税并最终将其用于数学计算?
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
答案 0 :(得分:1)
在您的代码中,sales_tax
是initialize
方法的局部变量。它不存在于该范围之外。
这是获得销售税的一种方式:
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
,因为没有理由担心由于范围而镜像类内的局部变量。
这段代码远非最佳,但它至少是“工作代码”。