Menu
Coddy logo textTech

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

Часть раздела Основы путешествия по R на Coddy — урок 51 из 78.

Иногда вам нужно, чтобы функция имела «стандартное» поведение, которое можно настроить при необходимости. Значения параметров по умолчанию позволяют определить, каким должен быть параметр, если вызывающая сторона его не указывает.

Вы устанавливаете значение по умолчанию, используя = в определении функции:

greet <- function(name = "Guest") {
  print(paste("Hello,", name))
}

greet()
greet("Alice")

Вывод:

[1] "Hello, Guest"
[1] "Hello, Alice"

При вызове без аргумента функция использует "Guest" в качестве значения по умолчанию. Когда вы передаете значение, оно переопределяет значение по умолчанию.

Вы можете смешивать обязательные и необязательные параметры. Параметры со значениями по умолчанию должны идти после параметров без них:

calculate_total <- function(price, tax_rate = 0.1) {
  return(price + (price * tax_rate))
}

print(calculate_total(100))
print(calculate_total(100, 0.2))

Вывод:

[1] 110
[1] 120

Здесь price является обязательным, в то время как tax_rate по умолчанию составляет 10%. Это делает ваши функции гибкими — простыми в использовании в обычных случаях, но настраиваемыми при необходимости.

challenge icon

Задание

Легко

Создайте функцию с именем calculate_shipping, которая принимает два аргумента:

  • weight — вес посылки (обязательный)
  • rate — стоимость за единицу веса (необязательный, по умолчанию равен 5)

Функция должна возвращать стоимость доставки, вычисляемую как weight * rate.

Вы получите две строки входных данных:

  1. Значение веса
  2. Либо значение тарифа (rate), ЛИБО слово default

Если второй входной аргумент равен default, вызовите функцию только с весом (используя тариф по умолчанию). В противном случае вызовите функцию, передав и вес, и предоставленный тариф.

Выведите возвращенный результат.

Например, если входные данные следующие:

10
default

Выходные данные должны быть:

[1] 50

Если входные данные следующие:

10
3

Выходные данные должны быть:

[1] 30

Шпаргалка

Вы можете задать значения параметров по умолчанию в функции, используя = в определении функции:

greet <- function(name = "Guest") {
  print(paste("Hello,", name))
}

greet()           # Использует значение по умолчанию: "Hello, Guest"
greet("Alice")    # Переопределяет значение по умолчанию: "Hello, Alice"

При смешивании обязательных и необязательных параметров располагайте параметры со значениями по умолчанию после параметров без них:

calculate_total <- function(price, tax_rate = 0.1) {
  return(price + (price * tax_rate))
}

calculate_total(100)       # Использует tax_rate по умолчанию: 110
calculate_total(100, 0.2)  # Пользовательский tax_rate: 120

Попробуйте сами

# Чтение входных данных
con <- file("stdin", "r")
weight <- as.numeric(suppressWarnings(readLines(con, n = 1)))
rate_input <- suppressWarnings(readLines(con, n = 1))
close(con)

# TODO: Напишите ваш код ниже
# 1. Определите функцию calculate_shipping с параметрами weight (обязательный) и rate (необязательный, по умолчанию = 5)
# 2. Проверьте, является ли rate_input строкой "default" или числом
# 3. Вызовите функцию соответствующим образом и выведите результат
quiz iconПроверьте себя

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

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