Значения параметров по умолчанию
Часть раздела Основы путешествия по Ruby на Coddy. Урок 53 из 88.
Иногда нужно, чтобы у метода был разумный запасной вариант, если аргумент не предоставлен. Значения параметров по умолчанию позволяют определить, каким должен быть параметр, если вызывающая сторона его не указывает.
Чтобы задать значение default, используйте знак = после имени parameter:
def greet(name = "friend")
puts "Hello, #{name}!"
end
greet("Alice") # Выводит: Hello, Alice!
greet # Выводит: Hello, friend!Когда вы вызываете greet без аргумента, Ruby использует «friend» в качестве значения default. Когда вы указываете аргумент, он переопределяет default.
Вы можете смешивать обычные параметры с параметрами по умолчанию, но параметры со значениями по умолчанию должны находиться после параметров без значений по умолчанию:
def power(base, exponent = 2)
base ** exponent
end
puts power(5) # Выводит: 25 (5 в квадрате)
puts power(2, 3) # Выводит: 8 (2 в кубе)Это делает методы более гибкими. Вызывающие могут предоставить только essential информацию, а для необязательных деталей используются разумные значения по умолчанию.
Задание
ЛегкоОпредели метод с именем multiply, который принимает два parameter: a и b. У parameter b должно быть значение по умолчанию 1. Метод должен возвращать произведение a и b.
Считай два целых числа из input:
- Первое number (будет предоставлено всегда)
- Второе number (может быть предоставлено, а может и отсутствовать)
Если предоставлен только один input, выполни call метода только с этим аргументом (используя значение по умолчанию для b). Если предоставлены два input, выполни call метода с обоими аргументами.
Выведи результат call метода.
Формат input будет следующим:
- Первая строка: первое number
- Вторая строка: либо number, либо слово
none
Например, если input — 7 и 3:
21Если input — 5 и none:
5Если input — 12 и 4:
48Попробуйте сами
# Чтение ввода
a = gets.chomp.to_i
b_input = gets.chomp
# TODO: Определить метод multiply с параметром b, имеющим значение по умолчанию 1
# TODO: Вызвать метод соответствующим образом в зависимости от того, является ли b_input "none" или числом
# Если b_input равен "none", вызвать multiply только с a
# Если b_input является числом, вызвать multiply с обоими a и b
# Вывести результат
puts resultВ этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
4Операторы. Часть 2
Логические операторы. Часть 1Логические операторы. Часть 2Повторение — простая логикаЛогические операторы. Часть 3Логические операторы. Часть 47Калькулятор разделения счета
Приветственное сообщениеПолучение пользовательского ввода13Продвинутая работа с массивами
Срезы массивов через диапазоныСрезы массивов через индексыОператоры массивовМетод include?2Переменные и типы данных
Числа и переменныеСтроковый тип данныхЛогический тип данныхТип данных SymbolПроверка типов данныхПравила именованияПовторение: создание переменных5Принятие решений
Оператор IfКонструкция If - ElseПовторение — Простой калькуляторВложенные конструкции If - ElseОператор Unless8Циклы
Цикл For с диапазонамиЦикл WhileОператор BreakОператор NextПовторение: ФакториалЦикл TimesЦикл UntilВложенные циклыПовторение: Динамический ввод3Операторы. Часть 1
Арифметические операторыОператор остатка от деленияСокращенная арифметикаИтоги: простая математикаОператоры сравнения6Основы ввода-вывода
Вывод с помощью putsВывод с помощью print и pВывод с переменнымиВвод с помощью getsМетод chompПреобразование типовИтоги — Калькулятор возрастаИтоги — Истина или ложь9Методы
Определение методаПараметры методаВозвращаемые значенияПовторение: метод SigmaПовторение: метод ValidationЗначения параметров по умолчаниюПотренируйтесь самостоятельно: Онлайн-компилятор Ruby