【问题标题】:Traceback/NameError exception using SublimeText 2 with Ruby使用 SublimeText 2 和 Ruby 的 Traceback/NameError 异常
【发布时间】:2013-09-05 03:16:43
【问题描述】:

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

【问题讨论】:

    标签: ruby sublimetext2


    【解决方案1】:

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

    另外,您的 ruby​​ 代码不正确。

    【讨论】:

    • 为什么代码不正确?此外,ST2 控制台可以设置为 ruby​​。
    • @Sikian 我很高兴听到您如何将控制台设置为 ruby​​
    • @Sikian 你需要做Calculator.new.add(1,2)
    • 这就是我的建议,但我认为最好将它放在文件中。
    • 我起初投了反对票,因为我认为它没有为问题提供任何信息。
    【解决方案2】:

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

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

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

    如果您有任何疑问或者我完全弄错了,请告诉我!

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

    【讨论】:

    • 感谢您的意见!我试了一下,得到了以下结果:>>> Calculator.new.add(1, 2) Traceback(最近一次调用最后):文件“”,第 1 行,在 NameError: name 'Calculator' is未定义
    • 愚蠢的我。 puts 命令起作用了。非常感谢您和 texasbruce!现在,要弄清楚如何将控制台设置为 Ruby...
    猜你喜欢
    • 2022-01-12
    • 2011-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-28
    • 1970-01-01
    相关资源
    最近更新 更多