Menu
CoddyTech

Giá trị trả về

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 50 trên 88.

Đến giờ, các phương thức của chúng ta đã thực hiện những hành động như in ra đầu ra. Nhưng phương thức thực sự trở nên mạnh mẽ khi có thể gửi dữ liệu trở lại đoạn code đã gọi chúng. Giá trị trả về giúp làm điều đó.

Trong Ruby, một phương thức tự động trả về giá trị của biểu thức cuối cùng:

def add(a, b)
  a + b
end

result = add(5, 3)
puts result  # In ra: 8

Lưu ý rằng không có puts bên trong phương thức. Thay vào đó, phương thức tính a + b và trả về giá trị đó. Sau đó, bạn có thể lưu giá trị này vào một biến hoặc dùng trực tiếp.

Bạn cũng có thể dùng từ khóa return một cách tường minh:

def multiply(a, b)
  return a * b
end

puts multiply(4, 5)  # Đầu ra: 20

Từ khóa return thoát khỏi phương thức ngay lập tức và gửi lại giá trị được chỉ định. Cách này hữu ích khi bạn muốn thoát sớm dựa trên một điều kiện. Cả hai cách đều hoạt động, nhưng lập trình viên Ruby thường dùng giá trị trả về ngầm định để code gọn gàng hơn.

Giá trị trả về giúp bạn kết hợp các thao tác và xây dựng logic phức tạp từ những phương thức đơn giản:

def double(n)
  n * 2
end

puts double(double(3))  # Đầu ra: 12
challenge icon

Thử thách

Dễ

Định nghĩa một phương thức có tên square, nhận một tham số n và trả về bình phương của số đó (số đó nhân với chính nó).

Đọc hai số nguyên từ đầu vào. Dùng phương thức square để tính bình phương của mỗi số, sau đó in ra tổng của hai bình phương.

Ví dụ, nếu đầu vào là 3 và 4:

  • Bình phương của 3 là 9
  • Bình phương của 4 là 16
  • Tổng là 25

Đầu ra sẽ là:

25

Nếu đầu vào là 5 và 2, đầu ra sẽ là:

29

Tự làm thử

# Đọc hai số nguyên từ đầu vào
num1 = gets.chomp.to_i
num2 = gets.chomp.to_i

# TODO: Định nghĩa phương thức square bên dưới


# TODO: Dùng phương thức square để tính tổng bình phương rồi in kết quả
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