Ruby / Python中的计算器程序,不使用任何内置运算符

时间:2015-10-29 21:17:46

标签: python ruby oop

我最近在接受初级开发职位的采访时被问到这个问题。我被要求创建一个计算器程序,可以在不使用内置的+, - ,*,/运算符的情况下进行加,减,乘和除。基本上是从头开始构建它。

我不知道如何解决这个问题。有没有人对如何实施至少一项操作有任何指导?我可以从那里弄清楚剩下的,但确实需要一些指导。

我在python和ruby中编码。

2 个答案:

答案 0 :(得分:2)

这是添加的一个例子。

class Integer
  def add(int) # int is 5 in the demo
    res = self # 7 in the demo
    int.times{res = res.succ} # succ just adds 1
    return res
  end
end

# demo
p 7.add(5) # => 12

除了succ之外,Integer类还有一个pred方法,它减去1.对于构建subtract方法非常有用。乘法只是多次加法,整数除法只是减去多次。

答案 1 :(得分:1)

研究如何实施Ruby的“运营商”;它们是方法,send可以用作调用它们的替代方法。

来自文档:

  

调用符号标识的方法,传递指定的任何参数....

class Klass
  def hello(*args)
    "Hello " + args.join(' ')
  end
end
k = Klass.new
k.send :hello, "gentle", "readers"   #=> "Hello gentle readers"

从那起:

1.send(:+, 1) # => 2

更多地了解这一点是留给读者的练习。

如果您真的想深入了解,可以创建基本方法,如:

class Fixnum
  def add(value)
    val = self
    value.times do
      val = val.succ
    end
    val
  end
end

1.add(1) # => 2