我不停地跑这个意外的错误标记。我想程序而无需调用红宝石运行。对于实例,而不是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
你正在从命令行运行这个文件而不传递给'ruby'?听起来就像你需要一个shebang http://stackoverflow.com/questions/10376206/what-is-the-preferred-bash-shebang –
你在主要方法中缺少'end' – usha
有没有必要做'* line_array =',这是一种反模式。只需使用'line_array ='。同样,不要定义一个'main'方法,这是毫无意义的。据了解,Ruby从来没有这样的事情,而且这样做会损失惯例。您还应该使用[OptionParser](http://ruby-doc.org/stdlib-2.3.1/libdoc/optparse/rdoc/OptionParser.html)来处理命令行参数。 – tadman