2017-08-09 120 views
0

我在一個文件1_arithmetic.rb寫了下面的代碼:意外的語法錯誤(

def arithmetic1(n) 
    (n * 5) - 20 
end 

使用寶石工具rake,我輸入到控制檯這樣的:

rake 1_arithmetic.rb:arithmetic1(5) 

然後,我得到了一個錯誤消息,內容如下:

syntax error near unexpected token `(' 

有人知道我可能做錯了嗎?或者是問題我用的方式rake

+0

[如何將命令行參數傳遞給rake任務](https://stackoverflow.com/questions/825748/how-to-pass-command-line-arguments-to-a-rake-task ) – whodini9

+0

爲什麼你爲此使用耙子?你在這裏沒有耙子任務(AFAICT)。使用'irb',正確地暴露方法,然後從中取出。 –

+0

歡呼聲,我讀了我的教程錯誤,它已經編程了一個耙子任務,我可以打電話 –

回答

0

我相信耙子只能用於耙子任務。你可以創建一個rake任務,然後調用你的方法。

require './1_arithmetic.rb' 
task :arithmetic, [:n] => [:environment] do |t, args| 
    arithmetic1(args[:n]) 
end 

您需要調用使用

rake arithmetic[5] 

參考任務:How can I run a ruby class from rake file?

參考:How to pass command line arguments to a rake task

+2

在Ruby中如何解析? 'require'不需要'end','[n]'似乎引用一個未知的變量'n'。 '['也是一個可能被解釋的shell字符,所以如果在傳入參數的目錄中有一個名爲'arithmetic5'的文件。 – tadman

+0

@tadman快速回答它不在任何級別 – engineersmnky

+0

@engineersmnky這就是我想的。至於爲什麼這被接受,這是一個謎。 – tadman

0

如果你正在嘗試做的是運行的方法,你不需要rake才能這樣做,您只需使用ruby命令:

ruby -r./1_arithmetic.rb -e "puts arithmetic1(10)" 

-r選項告訴ruby命令require文件和-e選項告訴ruby運行傳過來的字符串代碼。

注意:發佈的命令假定文件1_arithmetic.rb位於您運行命令的目錄中,如果它位於其他位置,則需要將該文件路徑(./1_arithmetic.rb)弄亂。