For example there’s a code
lines = File.readlines(ARGV[0])
Why do i need the [0]?
I have another program, testingargv.rb with this code
puts ARGV.join(’-’)
(no [0] parameter)
if i type in the command prompt, testingargv.rb test 123
the result is test-123
i don’t understand the logic behind [0] in
lines = File.readlines(ARGV[0])
On Saturday 18 December 2010 19:12:57 Kaye Ng wrote:
i don’t understand the logic behind [0] in
lines = File.readlines(ARGV[0])
thanks guys!
ARGV is an array. Calling ARGV[0] returns the first argument of the
array,
that is the first argument passed on the command line to the ruby
script.
Calling ARGV.join(’-’) returns a string obtained by concatenating the
elements
of the array with a - between each two of them.
The line
lines = File.readlines(ARGV[0])
assumes that the first parameter passed to the script on the command
line is
the name of the file, so ARGV[0] contains the name of the file and
File.readlines(ARGV[0]) returns an array of the lines contained in that
file.
For more information, see ri Array#[] and ri Array#join
On Saturday 18 December 2010 19:12:57 Kaye Ng wrote:
…
i don’t understand the logic behind [0] in
lines = File.readlines(ARGV[0])
thanks guys!
ARGV is an array. Calling ARGV[0] returns the first argument of the array,
…
This naming and usage stems back to the C programming language. There,
argv is the conventional name for any command line arguments to the
program, and it denotes an array of c-style strings. Elements of an
array in C are accessed by a (0-based) index. Hence argv[0] gets the
first argument value, argv[1] the second, and so on.
Just in case it’s not clear enough for him (Kaye ng)…
In C argv[0] is the name of file being executed and argv[1] is the
actual “first” argument.
In Ruby ARGV[0] is like argv[1] in C, the actual first argument.
Play around a bit with a script like this.
p ARGV
ARGV.each_with_index do |x,y|
puts “#{y} - #{x}”
end
Abinoam Jr.
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.