如果我有这个课程的样本:
class Item
def initialize
@i = 10
end
def value
@i ++ 1
end
end
# initialize the class
i = Item.new
如果我们调用p i.value
,我们会得到11.当我们运行它而不是11时,是否可以以某种方式修改此调用以获得12?
答案 0 :(得分:1)
不确定我是否理解。你是说这个吗?
class Item
def initialize
@i = 10
end
def value
@i += 1
end
end
i = Item.new
i.value # 11
i.value # 12
i.value # 13
或者你想做元编程?
def i.value
"whatever"
end
#or maybe this?
class Item
def value
"whatever"
end
end
答案 1 :(得分:1)
您发布的代码不可能。
您可以使用以下代码执行此操作:
class Item
def initialize
@i = 10
end
def value(j = 1) # use default parameter
@i ++ j # it's same as @i + j
end
end
i = Item.new
i.value => 11
i.value 2 => 12
OR
class Item
def initialize
@i = 10
end
def i=(value)
@i = value
end
def value
@i + 1
end
end
obj = Item.new
obj.i = 11
p obj.value # => 12
答案 2 :(得分:0)
将来电链接到succ
puts i.value.succ
# => 12