使用带有Ruby的SublimeText 2的Traceback / NameError异常

时间:2013-09-05 03:16:44

标签: ruby sublimetext2

此代码形式RubyMonk适用于RubyMonk:

class Calculator
  def add(a, b)
   a + b
  end

  def subtract(a, b)
   a - b
  end
end

我将它复制到Sublime Text 2,将构建系统设置为Ruby,然后我保存了它。当我输入类似add(1, 2)的控制台时,我得到以下异常:

Traceback (most recent call last):
  File "<string>", line 1, in <module>
NameError: name 'add' is not defined

我找不到解决方法。我尝试重新安装Sublime Text 2,尝试了ST3的测试版,尝试了其他代码,我知道它是好的(同样的错误)等等,没有什么工作。有什么想法吗?

编辑:根据另一位用户的建议,我试过了:

Calculator.new.add(1, 2)

返回:

Traceback (most recent call last):
  File "<string>", line 1, in <module>
NameError: name 'Calculator' is not defined

2 个答案:

答案 0 :(得分:1)

Sublime Text 2控制台是python控制台,而不是ruby。

此外,您的ruby代码不正确。

答案 1 :(得分:0)

我感觉你在没有Object的情况下调用方法add(1,2)。我的意思是,在这种情况下,你并没有告诉计算器添加,而只是为了空气......它不知道如何添加!

尝试执行以下操作: Calculator.new.add(1,2)

您将要求添加计算器的实例。

告诉我你是否有任何疑问,或者我是否完全错了!

编辑:正如texasbruce所说,ST2控制台是Python。因此,解决方案如下: 在代码中添加puts Calculator.new.add(1,2),然后点击Ctrl+B启动Ruby。