Asp Forum
Home
|
Login
|
Register
|
Search
Forums
>
comp.lang.ruby
Diagnosing error in command line input
Dave Thacker
12/22/2007 7:13:00 PM
I'm working on a program (my first) that will need to read user input (a file
name) from the command line. While looking for examples of reading command
line input, I stumbled across this example(1) which I've cut and pasted, to
see how it works.
#!/usr/bin/ruby
require 'readline'
def prompt(prompt="> ")
input = nil
prompt += " " unless prompt =~ /\s$/
loop do
input = Readline.readline(prompt, true)
break if input.length > 0
end
return input
end
apples = prompt("how many apples do you have?")
pears = prompt("how many pears do you have?")
nonsense = prompt("try my input history (up/down arrow)")
printf "there are %d items in our input history\n",
Readline::HISTORY
When I run this I get:
dthacker@buckbeak:~/learning/ruby$ ./test-cl-io.rb
how many apples do you have? 3
how many pears do you have? 7
try my input history (up/down arrow) 5
/test-cl-io.rb:18:in `printf': can't convert Object into Integer (TypeError)
from ./test-cl-io.rb:18
I'm guessing that HISTORY is not the method I want to call. Is that my
problem? Or is there a simple newbie syntax error I'm making?
TIA
Dave
(1)
http://beaver.net/slides/ruby/10-easy-p...
1 Answer
Matthew Harris
12/22/2007 7:34:00 PM
0
Dave Thacker wrote:
> I'm working on a program (my first) that will need to read user input (a file
> name) from the command line. While looking for examples of reading command
> line input, I stumbled across this example(1) which I've cut and pasted, to
> see how it works.
> #!/usr/bin/ruby
> require 'readline'
>
> def prompt(prompt="> ")
> input = nil
> prompt += " " unless prompt =~ /\s$/
> loop do
> input = Readline.readline(prompt, true)
> break if input.length > 0
> end
> return input
> end
>
> apples = prompt("how many apples do you have?")
> pears = prompt("how many pears do you have?")
> nonsense = prompt("try my input history (up/down arrow)")
>
> printf "there are %d items in our input history\n",
> Readline::HISTORY
>
> When I run this I get:
> dthacker@buckbeak:~/learning/ruby$ ./test-cl-io.rb
> how many apples do you have? 3
> how many pears do you have? 7
> try my input history (up/down arrow) 5
> ./test-cl-io.rb:18:in `printf': can't convert Object into Integer (TypeError)
> from ./test-cl-io.rb:18
>
> I'm guessing that HISTORY is not the method I want to call. Is that my
> problem? Or is there a simple newbie syntax error I'm making?
> TIA
> Dave
>
> (1)
http://beaver.net/slides/ruby/10-easy-p...
>
>
>
>
The object pointed to by Readline::HISTORY is not an object that can be
converted to an Integer. Your printf attempts to convert it to an
integer because it has %d. The Readline::HISTORY object is closer to an
array.
Try the following:
printf "there are %d items in our input history\n", Readline::HISTORY.size
--
Matthew Harris
http://matthew...
Servizio di avviso nuovi messaggi
Ricevi direttamente nella tua mail i nuovi messaggi per
Diagnosing error in command line input
Inserendo la tua e-mail nella casella sotto, riceverai un avviso tramite posta elettronica ogni volta che il motore di ricerca troverà un nuovo messaggio per te
Il servizio è completamente GRATUITO!
x
Login to ForumsZone
Login with Google
Login with E-Mail & Password