2017-02-19 71 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