Myron'un cevabını seviyorum ama "Artık Java / C # kullanmıyorum, bir daha asla miras kullanmayacağım" Ruby hastalığından muzdarip . Herhangi bir sınıfın açılması tehlikeyle dolu olabilir ve özellikle Ruby'nin temel kütüphanesinin bir parçası olduğunda az miktarda kullanılmalıdır . Hiç kullanmayın demiyorum, ama genellikle kaçınmak kolaydır ve daha iyi seçenekler vardır, örneğin
class IntegerInString < String
def initialize( s )
fail ArgumentError, "The string '#{s}' is not an integer in a string, it's just a string." unless s =~ /^\-?[0-9]+$/
super
end
end
Sonra bir sayı olabilecek bir dize kullanmak istediğinizde ne yaptığınız açıktır ve herhangi bir çekirdek sınıfı tıkamazsınız, örn.
n = IntegerInString.new "2"
n.to_i
# => 2
IntegerInString.new "blob"
ArgumentError: The string 'blob' is not an integer in a string, it's just a string.
Başlangıçta ikili sayıları kontrol etmek gibi diğer kontrolleri ekleyebilirsiniz. Ancak asıl önemli olan Ruby insanlar içindir ve insanlar için açıklık demektir . Bir nesneyi değişken adı ve sınıf adı aracılığıyla adlandırmak , işleri daha net hale getirir .
^
ve$
metakharlar gibi diğer regexp lezzetlerinden daha farklı anlamlara sahiptir. Muhtemelen kullanmak istersiniz\A
ve\Z
bunun yerine.