Skip to content
Menu
Poppy Ramblings Poppy Ramblings
  • About
Poppy Ramblings Poppy Ramblings

Language Awareness – Ruby

Posted on 2013-06-162020-04-12 by herbcso

Something to be aware of when dealing with Ruby that the core docs don’t really document clearly enough: explicit vs. implicit conversions.

Ruby provides functions like to_i and to_int that at first blush seem to do exactly the same thing. Yet, try to do something like “42”.to_i and you get back the natural-seeming 42 as an Integer object, but “42”.to_int gives you a NoMethodError: undefined method `to_int'. Why is that!?

Well, to_i is an explicit conversion method. String defines this as a helper method to allow you to convert Strings to Integers easily. However to_int is an implicit conversion method and is only defined for objects that can always be treated as though they were an Integer class. Therefore, String does not define to_int because not all strings can be treated as integers. However, Float does define both to_i and to_int because in both cases it makes sense to be able to treat a Float like ann Integer.

There are lots of methods like this in Ruby (e.g. to_ary (implicit) vs. to_a (explicit)). Know how to use them and apply them to your classes as appropriate.

PS: Thanks go to Avdi Grimm and his Exceptional Ruby talk for pointing this out to me. Most enlightening! He also has more on this in his new book Confident Ruby – I bought it, think it’s well worth the $25 he’s asking in the beta version. ;]

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Recent Posts

  • Shoutout for a nifty blog
  • Quick screenshots in Python
  • Getting IP address on very limited Docker containers
  • CIFS mount input/output error -5 with reading SOME directories
  • Avoid collisions in ~/bin

Recent Comments

  • herbcso on Debugging bash functions
  • herbcso on Everything you (n?)ever wanted to know about Unicode
  • herbcso on SpongeBob SquarePants in Buckaroo Banzai!?
  • mcshankins on SpongeBob SquarePants in Buckaroo Banzai!?
  • herbcso on PHP ZendDebugger and WAMP

Tags

ag AJAX bash blog cifs command-line cool debugging disk diun download firefox fix frameworks gdb homeassistant javascript packaging php plex portainer proxmox python ruby running samba search shoes silliness space SquarePants tcx therubyracer tips tricks tv unicode unix useful v8 WAMP weird windows xdebug zend

Archives

  • September 2024
  • January 2024
  • August 2023
  • September 2022
  • June 2022
  • March 2022
  • January 2022
  • May 2019
  • March 2019
  • April 2014
  • February 2014
  • October 2013
  • June 2013
  • April 2013
  • December 2012
  • November 2012
  • June 2012
  • April 2012
  • September 2011
  • October 2010
  • September 2010
  • August 2010
  • June 2010
  • May 2010
  • April 2010
  • October 2009
  • August 2008
  • June 2008
  • April 2008

Categories

  • android
  • browsers
  • coding
  • homelab
  • random nifty stuff
  • silly
  • site updates
  • Uncategorized

Meta

  • Log in
  • Entries feed
  • Comments feed
  • WordPress.org
©2025 Poppy Ramblings | Powered by Superb Themes