Ами ако подадем отрицателно число на #components
? Отново ли се счита за недефинирано поведение?
Всъщност върна ми: 'take': attempt to take negative size (ArgumentError)
,така че предполагам се счита за такова ... съжалявам за спама :/
Четвърта задача
@Цветан, а ако подадеш стринга
'ZOMGALIENZ!'
какво става? :)Виж колко яко - не сме слагали валидации, но пак получаваме
ArgumentError
:)При изпълнение
Range.new '1.', ''
Връща
"1."..""
А според условието като му се подават стрингове - трябва стрингът да се държи като Version.new, което не разбрах много добре.
Това означава, че стрингът, който ни се подава, е коректен, или че се хвърля ArgumentException при некректен стринг?
Очевидно вашето решение прилага първото предположение.
Въпроса се отнася и до методите в този клас.@Теодор, виж какъв клас правиш.
Моя грешка, извинявам се и мерси за бързия отговор.
Създаването на Range трябва да стане по следния начин:
Version::Range.new '1.', ''
Ако някой не е разбрал къде е грешката.Не знам дали аз нещо не бъркам, но когато въведа кода на задачата в irb и изпълня командата
Version::Range.new(Version.new('1.1'), Version.new('1.2')).to_a
, това което се извежда е:
=> [#<Version:0x00000002ad2cd8 @components=[1, 1]>, #<Version:0x00000002ad0758 @ components=[1, 1, 1]>, #<Version:0x00000002ab70a0 @components=[1, 1, 2]>, #, #<Version:0x00000002aa5ff8 @compone nts=[1, 1, 4]>, #<Version:0x00000002aa4c20 @components=[1, 1, 5]>, #<Version:0x0 0000002a9e708 @components=[1, 1, 6]>, #<Version:0x00000002a9dc40 @components=[1, 1, 7]>, #<Version:0x00000002a9d1c8 @components=[1, 1, 8]>, #<Version:0x00000002 a9c7f0 @components=[1, 1, 9]>]
rspec връща същото, когато тествам метода
@Александър,
Объркан е примера в условието. Все пак, ако тествате с
eq
това ще работи:range = Version::Range.new(Version.new('1.1.0'), Version.new('1.2.2')) expect(range.to_a).to eq [ '1.1', '1.1.1', '1.1.2', '1.1.3', '1.1.4', '1.1.5', '1.1.6', '1.1.7', '1.1.8', '1.1.9', '1.2', '1.2.1' ]
Ще работи, защото се сравнява с
==
елемент по елемент, а текущото решение може да сравнява и директно със стрингове.Няма да ви чупим тестовете за това - както и да го напишетe е ОК.
Трябва да сте влезли в системата, за да може да отговаряте на теми.