1

我是编程新手。刚开始学习Ruby。我已经参加了控制台课程,但我被困在这里。

我正在使用 mac 10.6.8。我在 sublime 文本编辑器中做了一个快速的 1+2。我保存了它。我转到控制台输入 irb,然后输入 ruby​​ example.rb。我在这里的其他地方读过,键入 require './example' 会有所帮助....它没有。我得到以下

NameError: undefined local variable or method `example' for main:Object
from (irb):2
from /usr/local/rvm/rubies/ruby-1.9.3-p392/bin/irb:16:in `<main>'

我不明白我做错了什么。谢谢您的帮助。对此,我真的非常感激。

-L

4

4 回答 4

0

可能你想试​​一试。
第 1 步:使用命令“cd folder_name/folder_location”导航到您的项目/文件文件夹
第 2 步:加载 './example.rb'

为了获得更好的解决方案,您可能想在 example.rb 中定义一些函数,例如:

def sum  
   1 + 2  
end

并在加载example.rb文件后在 irb 中输入sum以获取输出。

于 2013-08-18T19:35:14.983 回答
0

我的猜测是您正在输入(输入 irb):

require example.rb

当您需要输入时:

require './example.rb'

第一个告诉 ruby​​:“需要名为 example 的变量中的内容”。因为您没有定义名为 example 的变量,所以会导致 no variable 或 method 错误。

第二个告诉 ruby​​:“需要一个字符串 './example.rb'”。由于 require 方法本质上知道如何查找作为字符串传递的文件名并评估文件,因此您将获得正确的输出

顺便说一下,对于这个例子,example.rb 需要在同一个目录中。如果 example.rb 在另一个目录中,您需要使用完整路径(我不会在这里展开)来获取它。

您还会注意到输出将如下所示:

    3
    => true

这是因为该文件已被评估(执行代码:)puts 1+2并且该require方法返回true以指示它评估了该文件。

如果您再次需要该文件,您会得到false,因为该文件已经加载。

于 2013-08-20T01:19:39.887 回答
0

irb 是交互式红宝石外壳。在 shell 中,您键入的所有内容都被解释为 Ruby 代码,而不是 bash 命令。因此,例如:

bash> puts 1 + 2
# command not found: puts
# this happens because you're not in a Ruby shell

bash> irb
# now you're in a Ruby shell
irb> puts 1 + 2
# 3

如果您在 中编写了一些代码example.rb,您有两种选择:

  1. bash shell 中,运行ruby example.rb(从example.rb保存文件的同一目录。

  2. irb控制台,您可以require 'example'将 的内容加载example.rb到您的解释器中。在这种情况下,它将立即执行 Ruby 代码。如果您将 的内容包装example.rb在一个类中,它将加载该类,但在您实例化/调用它之前不会执行其中的代码。

希望这会有所帮助!

于 2013-08-18T19:41:43.757 回答
0

我会做如下:

kirti@kirti-Aspire-5733Z:~$ irb
2.0.0p0 :001 > require 'fileutils'
 => true 
2.0.0p0 :002 > FileUtils.pwd
 => "/home/kirti" 
2.0.0p0 :003 > FileUtils.cd "/home/kirti/ruby" 
 => nil 
2.0.0p0 :004 > load "./SO.rb"
3
 => true 
2.0.0p0 :005 > require "./SO.rb"
3
 => true 

我的SO.rb文件包含以下行:

puts 1+2
于 2013-08-18T19:26:11.937 回答