Четвърта задача

  1. Ами ако подадем отрицателно число на #components ? Отново ли се счита за недефинирано поведение? Всъщност върна ми: 'take': attempt to take negative size (ArgumentError),така че предполагам се счита за такова ... съжалявам за спама :/

  2. При изпълнение
    Range.new '1.', ''
    Връща
    "1."..""
    А според условието като му се подават стрингове - трябва стрингът да се държи като Version.new, което не разбрах много добре.
    Това означава, че стрингът, който ни се подава, е коректен, или че се хвърля ArgumentException при некректен стринг?
    Очевидно вашето решение прилага първото предположение.
    Въпроса се отнася и до методите в този клас.

  3. Не знам дали аз нещо не бъркам, но когато въведа кода на задачата в 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 връща същото, когато тествам метода

  4. @Александър,

    Объркан е примера в условието. Все пак, ако тествате с 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 е ОК.

Трябва да сте влезли в системата, за да може да отговаряте на теми.