我有一个作业的以下代码。经过大量调试后,我发现了正在发生的事情
class Integer
def initialize()
@ans = ""
end
def ans
@ans = ""
end
def ans=(value)
@ans = value
end
def to_base(base)
# convert given number into the base
# figure out how to make it the most efficient
num = self
r = 0
loop do
r = num % base # modulus
@ans = r.to_s + @ans.to_s # add to answer
num /= base # division
break unless num != 0
end
english = @ans # return value
end
def to_oct
self.to_base(8)
end
end
puts 8.to_oct
puts 8.to_base(2)
输出:
10
100010
二进制版本的输出应为1000
而不是100010
它所做的是将类8.to_oct
的第一个实例附加到第二个调用8.to_base(2)
有没有办法将其清除,因为我想在此示例中使用相同的数字(8)并将其转换为各种基数。我班上做错了什么?
谢谢!