cat a.rb
puts "argv length is #{ARGV.length}"
puts "Post title: "
title = gets.chomp
puts "your input title is #{title}"
puts "argv length is #{ARGV.length}"
puts "Post body: " if ARGV.length == 0
body = ARGF.gets.chomp
puts body
例如:ruby a.rb /etc/passwd
上面这段代码中,如果给了 命令行参数,title 就是从第一个参数文件中获取的,如果没有的话,就是从 stdin 获取。gets 本来就是这么用的吗?gets 的对象到底是谁?
第二个问题是,如果给了命令行参数,第二次打印出来的 ARGV 长度已经 -1 了,这里应该是 gets 的作用, 为什么 gets 操作之后,ARGV 的元素变少了?