2016-11-08 109 views
0

我不停地跑這個意外的錯誤標記。我想程序而無需調用紅寶石運行。對於實例,而不是ruby program1.rb,我應該能夠program1.rb poem.txt語法錯誤意外的標記「(」

這是錯誤信息:

program1.rb --backwards poem.txt 
./program1.rb: line 1: syntax error near unexpected token `(' 
./program1.rb: line 1: `def backlines(line_array)' 

這是我的代碼:

def backlines(*line_array) 

end 

def backwards(line_array) 

end 

def backchars(line_array) 

end 

def main 
    file = File.new(ARGV[1], "r") do |file| 
    line_array = file.readlines 
    *line_array = line_array.reverse 
    if ARGV[0] == "--backlines" 
    *backwards_poem = backlines(line-array) 
    #you can manipulate "backwards_poem" however you want 
    elsif ARGV[0] == "--backwards" 
    backwards(line_array) 
    elsif ARGV[0] == "--backchars" 
    backchars(line_Array) 
    end 

    # passing a *line_array into a function 
end 

main 
+0

你正在從命令行運行這個文件而不傳遞給'ruby'?聽起來就像你需要一個shebang http://stackoverflow.com/questions/10376206/what-is-the-preferred-bash-shebang –

+2

你在主要方法中缺少'end' – usha

+0

有沒有必要做'* line_array =',這是一種反模式。只需使用'line_array ='。同樣,不要定義一個'main'方法,這是毫無意義的。據瞭解,Ruby從來沒有這樣的事情,而且這樣做會損失慣例。您還應該使用[OptionParser](http://ruby-doc.org/stdlib-2.3.1/libdoc/optparse/rdoc/OptionParser.html)來處理命令行參數。 – tadman

回答

1

你有沒有在你的腳本在上面執行rubyè? G:

#!/usr/bin/ruby 
+0

我試過了,但我得到了一個語法錯誤,意外的輸入結束,期待keyword_end :( – moon

+2

「我試過了,但我得到了語法錯誤,意想不到的結束輸入,期待keyword_end「正確如此!你會丟失一個關鍵字'end'因此,這證明將shebang行放在頂部會導致腳本工作_correctly_!它被解析爲ruby和ruby解析器告訴你一些你需要修復的東西 – matt

+0

我已經把shebang行放在頂端,沒有錯誤返回,但也沒有輸出 – moon

0
#!/usr/bin/ruby 

def backlines(*line_array) 

end 

def backwards(line_array) 

end 

def backchars(line_array) 

end 

def main 
    puts ARGV 
    # File open not new ... this block requires the end below. 
    File.open(ARGV[1], "r") do |file| 
    line_array = file.readlines 
    *line_array = line_array.reverse 
    if ARGV[0] == "--backlines" 
     *backwards_poem = backlines(line_array) 
     #you can manipulate "backwards_poem" however you want 
    elsif ARGV[0] == "--backwards" 
     backwards(line_array) 
    elsif ARGV[0] == "--backchars" 
     backchars(line_array) 
    end 
    end 
    # passing a *line_array into a function 
end 

這應該您開始使用,如果你的稱呼它./program1.rb --backwards file

你也有過線陣列,line_array和line_Array這應該是人的一個變量,我認爲。

+0

謝謝,我認爲代碼工作,但它沒有返回任何輸出。我用來測試的poem.txt包含三行。 – moon

+0

你需要在你的功能中做一些事情。 @ guest12 – corn3lius

+0

當我執行./program1.rb --backwards poem.txt時,它應該返回將poem.txt中的所有行向後移動的輸出 – moon

相關問題