I’m almost an absolute novice in Ruby; it is my first language and I
just began learning the basics yesterday, using Chris P.'s ‘Learning
to Program.’
The trouble I’m having is simple, but nonetheless I would appreciate an
explanation. The little program I’ve written accomplishes a simple task:
it asks for your favorite number, adds one to it, then returns it to
you. Here it is:
puts ‘Hey there, I’m Uno.’
puts ‘What’s your favorite number?’
number = gets.chomp
better = number.to_i + 1
puts better + ‘…That’s better.’
I’m receiving this error: String can’t be coerced into Fixnum
(TypeError).’ Why can’t this variable–which contains a numeric
string–be converted into an integer?
Hi –
On Fri, 17 Jul 2009, Max N. wrote:
I’m almost an absolute novice in Ruby; it is my first language and I
just began learning the basics yesterday, using Chris P.'s ‘Learning
to Program.’
Welcome to Ruby!
I’m receiving this error: String can’t be coerced into Fixnum
(TypeError).’ Why can’t this variable–which contains a numeric
string–be converted into an integer?
The reason is that better is an integer, but “That’s better.” is a
string. So it’s like you’re trying to do:
5 + “hello”
and that doesn’t work. You can convert back:
puts better.to_s + “…That’s better”
or use Ruby’s string interpolation syntax, which inserts expressions
into strings, via the #{} construct, and does the conversion for you:
puts “#{better}…That’s better.”
I’ve interpolated better, not better.to_s, and it will automatically
be to_s’d for me.
David
On Thu, Jul 16, 2009 at 4:53 PM, Max N. [email protected]
wrote:
…
puts ‘Hey there, I'm Uno.’
puts ‘What's your favorite number?’
number = gets.chomp
better = number.to_i + 1
puts better + ‘…That's better.’
You’re looking to the wrong line for the error
it’s
puts better.to_s + …
John
David A. Black wrote:
Hi –
On Fri, 17 Jul 2009, Max N. wrote:
I’m almost an absolute novice in Ruby; it is my first language and I
just began learning the basics yesterday, using Chris P.'s ‘Learning
to Program.’
Welcome to Ruby!
I’m receiving this error: String can’t be coerced into Fixnum
(TypeError).’ Why can’t this variable–which contains a numeric
string–be converted into an integer?
The reason is that better is an integer, but “That’s better.” is a
string. So it’s like you’re trying to do:
5 + “hello”
and that doesn’t work. You can convert back:
puts better.to_s + “…That’s better”
or use Ruby’s string interpolation syntax, which inserts expressions
into strings, via the #{} construct, and does the conversion for you:
puts “#{better}…That’s better.”
I’ve interpolated better, not better.to_s, and it will automatically
be to_s’d for me.
David
Welcome to Ruby!
Thanks! I look forward to learning what appears to be an incredibly
dynamic language.
Ahh…I see. Thank you for that explanation. It’s instances such as
these that allow a few basic concepts to come together.
Hi,
On Thu, Jul 16, 2009 at 4:53 PM, Max N.[email protected]
wrote:
I’m almost an absolute novice in Ruby; it is my first language and I
just began learning the basics yesterday, using Chris P.'s ‘Learning
to Program.’
Welcome!
The trouble I’m having is simple, but nonetheless I would appreciate an
explanation. The little program I’ve written accomplishes a simple task:
it asks for your favorite number, adds one to it, then returns it to
you. Here it is:
puts ‘Hey there, I'm Uno.’
puts ‘What's your favorite number?’
number = gets.chomp
better = number.to_i + 1
puts better + ‘…That's better.’
Looks like a few other folks have already solved your problem, so a
quick note on Ruby idiom/features. Ruby lets you use single or
double quotes to represent a string. The difference is that double
quotes allow variables to easily be inserted in your string. Also,
they make it easy to have apostrophes in your strings! A slightly
modified example, with no more ' pain:
puts “Hey there, I’m Uno.”
puts "What’s your favorite number?
number = gets.chomp
better = number.to_i + 1
puts “#{better}… That’s better.”
~ j.
On Fri, Jul 17, 2009 at 11:39 AM, John wrote:
On Thu, Jul 16, 2009 at 4:53 PM, Max N.[email protected] wrote:
I’m almost an absolute novice in Ruby; it is my first language and I
…
number = gets.chomp
better = number.to_i + 1
puts “#{better}… That’s better.”
to the OP:
you could try playing (just for ruby fun) w the above code; make it a
one-liner, eg:
puts “#{gets.to_i + 1}… That’s better.”
kind regards -botp