Menu
Coddy logo textTech

Значения параметров по умолчанию

Часть раздела Основы путешествия по 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 информацию, а для необязательных деталей используются разумные значения по умолчанию.

challenge icon

Задание

Легко

Определи метод с именем multiply, который принимает два parameter: a и b. У parameter b должно быть значение по умолчанию 1. Метод должен возвращать произведение a и b.

Считай два целых числа из input:

  1. Первое number (будет предоставлено всегда)
  2. Второе 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
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Основы

Потренируйтесь самостоятельно: Онлайн-компилятор Ruby