I have this set of constructs:
def initialize(argv)
@argv = argv
end
def start
puts @argv.class
puts @argv.size
puts @argv
@argv.include?(’–update’) ? puts(“Includes update”) : puts(“No
–update”)
…
which produces this output for a given input:
Array
4
‘-s /doc/data/fx-noon-all-2009-04-15.xml’
‘-f csv’
‘-o forex_testing’
‘–update’
‘-t’
No --update
Now. Here are the posers that I cannot answer.
Why is #size == 4 rather than 5; and
Why is ‘–update’ listed when printing the array but it is not found in
the same array by #include?(’–update’). What is it that I am getting
wrong here?
P.S. This gives exactly the same output
@argv.include?("'--update'") ? puts("Includes update") : puts("No
–update")
Why is #size == 4 rather than 5; and
maybe you could add a
puts @argv.inspect to see what’s going on ?
=r
Am Dienstag 14 Juli 2009 18:02:19 schrieb James B.:
Array
Why is #size == 4 rather than 5; and
arr = [“1”, “2”, “3\n4”, “5”]
puts arr
puts “size is #{arr.size}”
will output:
1
2
3
4
5
size is 4
Meaning: if some of the strings in the array contain newlines, you can
not
tell from puts’ output how many items are in the array.
Why is ‘–update’ listed when printing the array but it is not found in
the same array by #include?(’–update’). What is it that I am getting
wrong here?
puts ["–update"]
will output:
–update
puts ["’–update’"]
will output:
‘–output’
In other words, puts will only surround the string with quotes if the
string
actually contains quotes.
Generally you should use p instead of puts for your debug output so you
can
more easily tell the exact contents of the array.
HTH,
Sebastian
Roger P. wrote:
Why is #size == 4 rather than 5; and
maybe you could add a
puts @argv.inspect to see what’s going on ?
=r
puts @argv.class
puts @argv.size
puts @argv
puts @argv.inspect
@argv.include?("--update") ? puts("Includes update") : puts("No
–update")
puts @argv.index("’–update’")
Array
5
‘-s /doc/data/fx-noon-all-2009-04-15.xml’
‘-f csv’
‘-o forex_testing’
‘–update’
‘-t’
["’-s /doc/data/fx-noon-all-2009-04-15.xml’ ", "’-f csv’ ", "’-o
forex_testing’ ", "’–update’ ", "’-t’ "]
No --update
nil
Excellent suggestion. The trailing space … Sigh…
Thanks!
Roger P. wrote:
maybe you could add a
puts @argv.inspect to see what’s going on ?
=r
puts @argv.class
puts @argv.size
puts @argv
puts @argv.inspect
@argv.include?("'--update'") ? puts("Includes update") : puts("No
–update")
puts @argv.index("’–update’")
Array
5
‘-s /doc/data/fx-noon-all-2009-04-15.xml’
‘-f csv’
‘-o forex_testing’
‘–update’
‘-t’
["’-s /doc/data/fx-noon-all-2009-04-15.xml’ ", "’-f csv’ ", "’-o
forex_testing’ ", “’–update’”, “’-t’”]
Includes update
3
Thank you all very much.