Hacker News new | ask | show | jobs
by tokamak-teapot 1794 days ago
Does nine really end up containing a string like that? I would have expected it to be the number 9.
3 comments

The example is syntactically incorrect Crystal. Should be

  nine = while 1; break 9; end
  puts nine
And yes, it prints "9".
What is going on with the upvotes here? The incorrect comment by OP is upvoted, while this correct comment is downvoted.

  irb(main):001:0> nine = while 1 do break 9 end
  => 9

  irb(main):002:0> nine.class
  => Integer

  irb(main):003:0> puts nine
  9
  => nil
puts might be calling .to_s on the variable, which is why you see a string, but the loop does return an integer.
And just to be clear, to_s will return a string, but it will definitely not do the craziness of converting an integer into an English representation of the number!

    9.to_s
    => "9"
Sorry. Yes, you are correct.

I over-edited my comment to fit a narrow screen, breaking the example.