Giá trị tham số mặc định
Thuộc phần Kiến thức nền tảng trong hành trình R của Coddy. Bài học 51 trên 78.
Đôi khi, bạn muốn một hàm có hành vi “mặc định” mà bạn có thể tùy chỉnh khi cần. Giá trị tham số mặc định giúp bạn xác định giá trị của tham số nếu bên gọi không cung cấp.
Bạn đặt giá trị mặc định bằng cách dùng = trong phần định nghĩa hàm (function):
greet <- function(name = "Guest") {
print(paste("Hello,", name))
}
greet()
greet("Alice")Đầu ra:
[1] "Hello, Guest"
[1] "Hello, Alice"Khi được gọi mà không có đối số, hàm (function) dùng "Guest" làm giá trị mặc định. Khi bạn cung cấp một giá trị, giá trị đó sẽ thay thế giá trị mặc định.
Bạn có thể kết hợp tham số bắt buộc và tham số tùy chọn. Tham số có giá trị mặc định nên đặt sau các tham số không có giá trị mặc định:
calculate_total <- function(price, tax_rate = 0.1) {
return(price + (price * tax_rate))
}
print(calculate_total(100))
print(calculate_total(100, 0.2))Đầu ra:
[1] 110
[1] 120Ở đây, price là bắt buộc, còn tax_rate mặc định là 10%. Nhờ vậy, các hàm của bạn linh hoạt, dễ dùng trong những trường hợp phổ biến nhưng vẫn có thể tùy chỉnh khi cần.
Thử thách
DễTạo một hàm (function) có tên calculate_shipping nhận hai đối số:
weight: trọng lượng của kiện hàng (bắt buộc)rate: chi phí cho mỗi đơn vị trọng lượng (không bắt buộc, mặc định là5)
Hàm này sẽ trả về chi phí vận chuyển, được tính bằng weight * rate.
Bạn sẽ nhận được hai dòng đầu vào:
- Giá trị trọng lượng
- Giá trị rate hoặc từ
default
Nếu đầu vào thứ hai là default, hãy gọi hàm chỉ với trọng lượng (sử dụng rate mặc định). Nếu không, hãy gọi hàm với cả trọng lượng và rate đã cho.
In ra kết quả trả về.
Ví dụ, nếu đầu vào là:
10
defaultĐầu ra sẽ là:
[1] 50Nếu đầu vào là:
10
3Đầu ra sẽ là:
[1] 30Tự làm thử
# Đọc đầu vào
con <- file("stdin", "r")
weight <- as.numeric(suppressWarnings(readLines(con, n = 1)))
rate_input <- suppressWarnings(readLines(con, n = 1))
close(con)
# TODO: Viết code bên dưới
# 1. Định nghĩa hàm (function) calculate_shipping với tham số weight (bắt buộc) và rate (không bắt buộc, mặc định = 5)
# 2. Kiểm tra rate_input là "default" hay một số
# 3. Gọi hàm cho phù hợp và in kết quảBài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.
Tất cả bài học trong Kiến thức nền tảng
4Toán tử phần 2
Toán tử logic (AND, OR)Toán tử logic phần 2 (NOT)Ôn tập: logic đơn giảnLogic vector hóa phần 1Logic vector hóa phần 22Biến và kiểu dữ liệu
Kiểu dữ liệu sốKiểu dữ liệu số nguyênKiểu dữ liệu ký tựKiểu dữ liệu logicKiểm tra kiểu dữ liệuQuy tắc đặt tênGiá trị thiếu: NATóm tắt: tạo biến8Vòng lặp
Vòng lặp forVòng lặp whileBreakNext (continue)Ôn tập: giai thừaTạo dãy (seq, :)Vòng lặp lồng nhauÔn tập: đầu vào động3Toán tử phần 1
Toán tử số họcPhép chia lấy phần nguyên và phép moduloToán tử gánÔn tập: phép tính đơn giảnToán tử so sánh6Nhập xuất cơ bản
In đầu raDùng cat để in đầu raĐầu ra với biếnĐọc đầu vào bằng readline()Cơ bản về chuyển đổi kiểuÔn tập: máy tính tuổiÔn tập: đúng hay sai9Hàm
Khai báo hàmĐối số hàmGiá trị trả vềÔn tập: hàm SigmaÔn tập: hàm xác thựcGiá trị tham số mặc địnhTự luyện tập: Trình biên dịch R online