I'm new to Ruby, and have been working my way through Mr Neighborly's Humble Little Ruby Guide. There have been a few typos in the code examples along the way, but I've always managed to work out what's wrong and subsequently fix it - until now!
This is really basic, but I can't get the following example to work on Mac OS X (Snow Leopard):
gone = "Got gone fool!"
puts "Original: " + gone
gone.delete!("o", "r-v")
puts "deleted: " + gone
Output I'm expecting is:
Original: Got gone fool!
deleted: G gne fl!
Output I actually get is:
Original: Got gone fool!
deleted: Got gone fool!
The delete! method doesn't seem to have had any effect.
Can anyone shed any light on what's going wrong here? :-\
The String.delete
method (Documented here) treats its arguments as arrays and then deletes characters based upon the intersection of its arrays.
The intersection of 2 arrays is all characters that are common to both arrays. So your original delete of gone.delete!("o", "r-v")
would become
gone.delete ['o'] & ['r','s','t','u','v']
There are no characters present in both arrays so the deletion would get an empty array, hence no characters are deleted.