Writing correct Regular Expressions have always been a tough game for me. Just came across this nice site called Rubular where you can make and test your regular expressions (and may be with practice become some sort of expert too!)
Inheritance is a powerful idea in object oriented programming. This lets you add new enhancements to existing classes. Well, not exactly. You have to create a new data type derived from the existing classes and use these for additional enhancements.
For example, if we want to add a function palindrome to String class. Solution existing in all (most?) object oriented programming languages is to create a class say Word derived from String and add the function to this class. In Ruby for example it would look like:
Note – replace ‘LT’ with corresponding symbol for less than. HTML is messing it up and I feeling lazy to find the &; version for it.
class Word 'LT' String def palindrome? self == self.reverse end end ... irb> w = Word.new("level") irb> w.palindrome? true irb> w1 = Word.new("simple") irb> w1.palindrome? false
What we lose here is that we CANNOT call the function on String objects e.g., following is invalid:
irb> "level".palindrome? NoMethodError: undefined method `palindrome?' for "level":String
Ruby, quite surprisingly (and did i mention it never fails to amaze!) provides this. It lets you modify the built-in classes. So we can add a function simply by following:
class String def palindrome? self == self.reverse end end
and it gets your String more powerful!
irb> "level".palindrome? true
Isn’t that coooooool??