С Новым годом! Форум программистов, компьютерный форум, киберфорум
Ruby
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 08.10.2018
Сообщений: 93

Ruby attr_reader

08.01.2020, 21:01. Показов 1395. Ответов 2
Метки ruby (Все метки)

Студворк — интернет-сервис помощи студентам
Не хватает теста, в котором с помощью assert_kind_of проверяется, что объект класса Word2 также "наследник" Word. Как это осуществить?

Основная программа
Ruby
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# frozen_string_literal: true
 
# lb7_2.rb
# class Word
class Word
  def initialize(word = '')
    @word = word.to_s.gsub!(/\s.+/, '')
  end
 
  def all_info
    puts "Объект класса #{self.class.name} содержит поля:"
    puts "  Слово:#{@word.class.name}='#{@word}'"
  end
 
  def print
    puts @word
  end
 
  def size
    @word.size
  end
 
  def word
    @word.clone
  end
end
 
# class Word2
class Word2 < Word
  def initialize(word2 = '')
    super(word2)
    @length = @word2.size
  end
 
  def size
    @length
  end
 
  def all_info
    super
    puts "  Длина:#{@length.class.name}=#{@length}"
  end
 
  def count_of_vowels
    @word2.count 'eyuioaуеыаоэяию'
  end
end
Код тестов
Ruby
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# frozen_string_literal: true
 
# test_lb7_2.rb
require './lb7_2.rb'
require 'minitest/autorun'
# Test class
class Test1 < MiniTest::Unit::TestCase
  def test_1
    a = Word.new 'пример текста'
    assert_equal a.word, 'пример'
  end
 
  def test_2
    a = Word.new 'пример текста'
    assert_equal a.size, 6
  end
 
  def test_3
    a = Word2.new 'пример текста'
    assert_equal a.size, 6
  end
 
  def test_4
    a = Word2.new 'пример текста'
    assert_equal a.count_of_vowels, 2
  end
 
  def test_5
    a = Word2.new
    assert_equal a.size, 0
  end
end


Исполняемый файл
Ruby
1
2
3
4
5
6
7
8
9
10
11
# frozen_string_literal: true
 
# tui_lb7_2
require './lb7_2.rb'
puts 'Введите слово:'
a = Word2.new(gets.chomp)
puts 'Вывод слова:'
a.print
puts "Длина слова по запросу:#{a.size}"
a.all_info
puts "Гласных в слове:#{a.count_of_vowels}"
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.01.2020, 21:01
Ответы с готовыми решениями:

Attr_reader
Добрый день! Почему дает менять символьное имя :age ??? Я же поставил attr_reader Вот код class Person attr_reader :age ...

чтобы выучить Ruby on Rails, надо перед этим учить сам Ruby?
чтобы учить Ruby on Rails, надо перед этим учить сам Ruby?

Литература по Ruby и Ruby-on-Rails
Здравствуйте! Посоветуйте хороший самоучитель по Ruby для начинающих программистов! Спасибо!

2
the hardway first
Эксперт JS
 Аватар для j2FunOnly
2475 / 1847 / 910
Регистрация: 05.06.2015
Сообщений: 3,610
09.01.2020, 09:20
Цитата Сообщение от ArseniyPC Посмотреть сообщение
Не хватает теста
То есть в остальном у вас всё в порядке?
Ruby
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# frozen_string_literal: true
 
# lb7_2.rb
# class Word
class Word
  def initialize(word = '')
    @word = word.to_s.gsub(/\s.+/, '')
  end
 
  def all_info
    puts "Объект класса #{self.class.name} содержит поля:"
    puts "  Слово:#{@word.class.name}='#{@word}'"
  end
 
  def print
    puts @word
  end
 
  def size
    @word.size
  end
 
  def word
    @word.clone
  end
end
 
# class Word2
class Word2 < Word
  def all_info
    super
    puts "  Длина:#{size.class.name}=#{size}"
  end
 
  def count_of_vowels
    @word.count 'eyuioaуеыаоэяию'
  end
end
Ruby
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# frozen_string_literal: true
 
# test_lb7_2.rb
require './lb7_2.rb'
require 'minitest/autorun'
# Test class
class Test1 < MiniTest::Unit::TestCase # MiniTest::Unit::TestCase is now Minitest::Test.
  def test_1
    a = Word.new 'пример текста'
    assert_equal 'пример', a.word
  end
 
  def test_2
    a = Word.new 'пример текста'
    assert_equal 6, a.size
  end
end
 
class Test2 < MiniTest::Unit::TestCase # MiniTest::Unit::TestCase is now Minitest::Test.
  def test_3
    a = Word2.new 'пример текста'
    assert_equal 6, a.size
  end
 
  def test_4
    a = Word2.new 'пример текста'
    assert_equal 2, a.count_of_vowels
  end
 
  def test_5
    a = Word2.new
    assert_equal 0, a.size
  end
  
  def test_kind_of_word_class
    a = Word2.new
    assert_kind_of Word, a
  end
end
0
0 / 0 / 0
Регистрация: 08.10.2018
Сообщений: 93
11.01.2020, 01:28  [ТС]
Ну, проверяющий сделал замечание по этому поводу, а также сказал: "чтобы не писать лишний код, вот это (@this = aaa.to_s).gsub!(/\s.+/, '')
писать совершенно бессмысленно, потому что так же будет работать и @this = aaa.to_s.gsub(/\s.+/, ''), @length = @this.to_s.size по той же логике @length = @this.size. Переменные рекомендую назвать по-человечески, например,
aaa в конструкторе Word можно было назвать word и переменную инстанса @this, которая содержит word, назвать @word - это существенно упростит
читаемость и является де-факто соглашением в руби (и не только). То же можно проделать с остальными переменными. Еще не хватает теста, в котором с помощью assert_kind_of проверяется,
что объект класса Word2 также "наследник" Word."

Все ли замечания исправлены? Подскажите пожалуйста, очень важно.

Добавлено через 1 минуту
j2FunOnly, j2FunOnly, Здравствуйте, можете помочь мне в консультировании по Ruby?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.01.2020, 01:28
Помогаю со студенческими работами здесь

Чтобы писать на Ruby on Rails - нужно учить Ruby потом Rails?
Чтобы выучить Ruby on Rails - нужно учить Ruby потом Rails?

% в ruby
(2...self).all?{|i| self % i != 0} Подскажите, пожалуйста, какую функцию здесь выполняют %. Я никак не могу понять.

Установка Ruby
Только начал изучать Руби. Подскажите пожалуйста. Как правильно установить, его что бы Руби крутился на локальном хосте. Знания пока...

Ошибка с Ruby
Привет ребята пытаюсь запустить программу вот она Установил ruby запускаю программу вылазят такие ошибки Скрины 1 2 3 ...

Выборка в RUBY
Доброго всем времени суток,,у меня есть проблемка не большая,кто может,прошу помощи. В общем есть текстовый файл, в ней записана некая...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru