Oryginalny komentarz
Wpis bardzo fajny, jak zwykle :). Przydałby się jednak jeszcze jakiś przykładowy program, taki z życia wzięty :).
3. Rozróżnienie między przedziałem ‘..’ i ‘...’ jest powalającym pomysłem. Jedynym gorszym mogłoby chyba być dodanie jeszcze przedziału konstruowanego za pomocą ‘....’. ;-)
Hm, co w tym złego? Czepiający się Pythonista?:P
Co do przedziałów (Range) dodam, że można bardzo łatwo tworzyć klasy, które się tak zachowują:
-- class XLetters include Comparable attr_accessor :lengthdef initialize(n) @length = n enddef succ XLetters.new(length + 1) enddef <=>(other) self.length <=> other.length enddef inspect 'x' * length end endrange = XLetters.new(3)..XLetters.new(10) p range.to_a p range.include?(XLetters.new(5)) #i inne (min, max etc) --ps. czemu nie ma podglądu komentarzy?:)
Zmodyfikowany komentarz
Wpis bardzo fajny, jak zwykle :). Przydałby się jednak jeszcze jakiś przykładowy program, taki z życia wzięty :).
3. Rozróżnienie między przedziałem ‘..’ i ‘...’ jest powalającym pomysłem. Jedynym gorszym mogłoby chyba być dodanie jeszcze przedziału konstruowanego za pomocą ‘....’. ;-)
Hm, co w tym złego? Czepiający się Pythonista?:P
Co do przedziałów (Range) dodam, że można bardzo łatwo tworzyć klasy, które się tak zachowują:
class XLetters
include Comparable
attr_accessor :length
def initialize(n)
@length = n
end
def succ
XLetters.new(length + 1)
end
def <=>(other)
self.length <=> other.length
end
def inspect
'x' * length
end
end
range = XLetters.new(3)..XLetters.new(10)
p range.to_a
p range.include?(XLetters.new(5))
#i inne (min, max etc)
ps. czemu nie ma podglądu komentarzy?:)