2016-11-08 92 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

相关问题