Giá trị tham số mặc định
Thuộc phần Kiến thức nền tảng trong hành trình Ruby của Coddy. Bài học 53 trên 88.
Đôi khi, bạn muốn phương thức có giá trị dự phòng hợp lý khi không có đối số nào được cung cấp. Giá trị mặc định của tham số cho phép bạn xác định giá trị của tham số nếu bên gọi không chỉ định giá trị đó.
Để đặt giá trị mặc định, hãy dùng dấu = sau tên tham số (parameter):
def greet(name = "friend")
puts "Hello, #{name}!"
end
greet("Alice") # Đầu ra: Hello, Alice!
greet # Đầu ra: Hello, friend!Khi bạn gọi greet mà không truyền đối số, Ruby dùng "friend" làm giá trị mặc định. Khi bạn truyền đối số, giá trị đó sẽ thay thế giá trị mặc định.
Bạn có thể kết hợp tham số thông thường với tham số có giá trị mặc định. Tham số có giá trị mặc định thường đứng sau tham số không có giá trị mặc định, và tham số thông thường không thể nằm giữa hai tham số có giá trị mặc định:
def power(base, exponent = 2)
base ** exponent
end
puts power(5) # In ra: 25 (5 bình phương)
puts power(2, 3) # In ra: 8 (2 lập phương)Điều này giúp các phương thức linh hoạt hơn. Bên gọi chỉ cần cung cấp thông tin thiết yếu, còn các chi tiết không bắt buộc sẽ dùng giá trị mặc định hợp lý.
Thử thách
DễĐịnh nghĩa một phương thức có tên multiply nhận hai tham số: a và b. Tham số b nên có giá trị mặc định là 1. Phương thức sẽ trả về tích của a và b.
Đọc hai số nguyên từ đầu vào:
- Số thứ nhất (luôn được cung cấp)
- Số thứ hai (có thể được cung cấp hoặc không)
Nếu chỉ có một đầu vào, hãy gọi phương thức với riêng đối số đó (dùng giá trị mặc định cho b). Nếu có hai đầu vào, hãy gọi phương thức với cả hai đối số.
In ra kết quả của lời gọi phương thức.
Định dạng đầu vào sẽ là:
- Dòng đầu tiên: số thứ nhất
- Dòng thứ hai: một số hoặc từ
none
Ví dụ, nếu đầu vào là 7 và 3:
21Nếu đầu vào là 5 và none:
5Nếu đầu vào là 12 và 4:
48Tự làm thử
# Đọc đầu vào
a = gets.chomp.to_i
b_input = gets.chomp
# TODO: Định nghĩa phương thức multiply với tham số b có giá trị mặc định là 1
# TODO: Gọi phương thức phù hợp tùy theo b_input là "none" hay một số
# Nếu b_input là "none", chỉ truyền a khi gọi multiply
# Nếu b_input là một số, truyền cả a và b khi gọi multiply
# In kết quả
puts resultBà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 phần 1Toán tử logic phần 2Ôn tập: logic đơn giảnToán tử logic phần 3Toán tử logic phần 42Biến và kiểu dữ liệu
Số và biếnKiểu dữ liệu chuỗiKiểu dữ liệu BooleanKiểu dữ liệu SymbolKiểm tra kiểu dữ liệuQuy ước đặt tênÔn tập: tạo biến8Vòng lặp
Vòng lặp for với khoảng giá trịVòng lặp whileThoátTiếp tụcÔn tập: giai thừaVòng lặp timesVòng lặp untilVòng lặp lồng nhauÔn tập: đầu vào động3Toán tử phần 1
Toán tử số họcToán tử moduloPhép tính số học rút gọnÔn tập: Toán cơ bảnToán tử so sánh6Nhập xuất cơ bản
In ra bằng putsIn ra bằng print và pIn ra bằng biếnNhập dữ liệu bằng getsPhương thức chompChuyển đổi kiểu dữ liệuÔn tập: Tính tuổiÔn tập: Đúng hay sai9Phương thức
Định nghĩa phương thứcTham số phương thứcGiá trị trả vềÔn tập: phương thức SigmaÔn tập: phương thức xác thựcGiá trị tham số mặc định15Theo dõi chi tiêu hằng ngày
Tổng quan dự ánThoát chương trìnhTự luyện tập: Trình biên dịch Ruby online