Menu
CoddyTech

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ý.

challenge icon

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:

  1. Số thứ nhất (luôn được cung cấp)
  2. 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:

21

Nếu đầu vào là 5 và none:

5

Nếu đầu vào là 12 và 4:

48

Tự 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 result
quiz iconTự kiểm tra

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

Tự luyện tập: Trình biên dịch Ruby online