我是编程新手。即将开始学习Ruby。我已经参加了一个控制台课程,但我被困在这里。
我正在使用mac 10.6.8。我在崇高的文本编辑器中快速完成了1 + 2。我保存了它。我转到我的控制台键入irb,然后键入ruby example.rb。我在其他地方读过,打字需要'./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
答案 0 :(得分: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
答案 1 :(得分:0)
可能你想尝试一下 步骤1:使用命令“cd folder_name / folder_location”导航到您的项目/文件夹 第2步:加载'./example.rb'
为了更好的解决方案,您可能想在example.rb中定义一些函数 像:
def sum
1 + 2
end
在加载 example.rb 文件后,在输出中输入 sum 。
答案 2 :(得分:0)
irb是交互式ruby shell。在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
中编写了一些代码,则有两种选择:
在 bash shell中,运行ruby example.rb
(从保存example.rb
文件的同一目录。
在 irb 控制台中,您可以require 'example'
,它会将example.rb
的内容加载到您的解释器中。在这种情况下,它将立即执行Ruby代码。如果您将example.rb
的内容包装在一个类中,它将加载该类,但在您实例化/调用它之前不会在其中执行代码。
希望这有帮助!
答案 3 :(得分:0)
我的猜测是你正在打字(进入irb):
require example.rb
当您需要输入:
时require './example.rb'
第一个告诉ruby:“需要名为example的变量中的内容”。因为您没有定义名为example的变量,所以它会导致无变量或方法错误。
第二个告诉ruby:“需要一个字符串'./example.rb'”。由于require方法基本上知道如何查找作为字符串传递的文件名并评估文件,因此您将获得正确的输出
顺便说一句,对于此示例,example.rb需要位于同一目录中。如果example.rb在另一个目录中,则需要使用完整路径(我不会在此处展开)来获取它。
你还会注意到输出看起来像这样:
3
=> true
这是因为评估了文件(执行代码:puts 1+2
),require
方法返回true
以表明它评估了文件。
如果您再次需要该文件,则会获得false
,因为该文件已加载。