2017-02-19 34 views
-1

这只是我在Mac OSX 10.12上使用Ruby创建的用于测试目的的示例方法,但我没有得到所需的输出:任何人都可以提出建议吗?我尝试使用paranthesis和without()来获得结果。它甚至不会抛出任何错误。在mac osx上无法获得使用ruby的def的结果

def hi 
puts "Hello World"  
End  
hi  
hi()  
hi("Hello Matz")` 

回答

0

试试这个:

def hi 
    puts "Hello World" 
end 

hi 
hi() 

而且这样的:

def greet(greeting) 
    puts greeting 
end 

greet("Hello Matz") 

注意,在这条线:

hi("Hello Matz")` 

你必须在最后一个刻度,所以那是一个错误:

1.rb:5: syntax error, unexpected tXSTRING_BEG, expecting end-of-input 

It doesn't even throw any error.

那你没有运行该程序。

我建议你打开一个终端窗口(应用程序/实用/ Terminal.app),并输入:

$ vimtutor 

VIM是随你的Mac免费的计算机编程编辑器。做这个教程并学习如何使用vim。要运行一个ruby程序,你需要将你的代码输入到一个文件中,然后将它保存为my_prog.rb。然后你需要给该文件ruby来执行它。你执行了Ruby程序是这样的:

$ ruby my_prog.rb 

您可以创建这样所有的Ruby程序的目录:

$ mkdir ruby_programs 
$ cd ruby_programs 

要创建一个目录中的新文件,使用vim:

~/ruby_programs$ vi my_prog.rb 

一旦你完成你的代码输入,保存文件,这将让你回在终端的提示,那么你就可以运行你的程序:

~/ruby_programs$ ruby my_prog.rb 

一旦你熟悉VIM,你觉得有信心运行你的Ruby程序,考虑与生动的粉笔配色方案安装的MacVim:

enter image description here

它更好看比普通VIM。

+1

向初学者建议vim ......真的吗? – spickermann

+0

我在20只猴子上测试了vim。对于三个香蕉,其中两个能够在当天结束时将莎士比亚轰动一时 – 7stud

0

尝试编辑您的文件,以便它读取:

def hi 
    puts "Hello World" 
end 

hi 

一些重要的不同需要注意:defend都区分大小写。函数定义的内部缩进两个空格。由于函数不带参数,所以在第4行上调用hi时不需要括号。

根据您的文件名,输入命令ruby FILENAME,你应该看到输出Hello World

-1

Ruby的关键字是区分大小写的。您的代码使用End,并且您可能希望使用end来标记hi方法的结尾。

因为End是不一样的end(和End不是关键字),irb一直等待输入并设为其他三个线作为hi方法的一部分。至于它可以告诉,它的定义是不完整的,直到它到达end关键字(所有非大写字母。)

正确的方式来定义的方法是:

def hi 
    puts "Hello World" 
end 

然后就可以调用它使用hihi()

调用它为hi("Hello Matz")(或hi "Hello Matz")抛出一个异常ArgumentError与消息wrong number of arguments (given 1, expected 0),因为它是用一个参数调用,但方法hi的定义不其定义指定有关参数的任何东西(的方法hi没有按”不接受任何参数)。

+0

感谢大家提出的建议。我输入“结束”不正确,因为它的大小写敏感。现在我输入“结束”,它工作得很好。 –

+0

另一个问题是下面的reg:def test(name =“World”) puts“Hello#{name.capitalize}!” 结束 这个“Hello ## {name.capitalize}”应该提供什么输出?我正在看到“Hello World!”。我不确定“name.capitalize”,它有什么作用? –

+0

看看它的[documentation](https://ruby-doc.org/core-2.4.0/String.html#method-i-capitalize)。它说:*“返回”str“的副本,第一个字符转换为大写,其余转换为小写。”*。它对''World''没有任何影响,因为它已经有了前面提到的大写字母。如果你想整个单词大写,然后尝试['upcase'](https://ruby-doc.org/core-2.4.0/String.html#method-i-upcase)。 – axiac