fbpx
Lesson 4 of 17
In Progress

Ruby Methods Detail

def được viết tắt bởi từ “define” có nghĩa là khai báo một hàm với tên phương thức và các biến số truyền vào trong hàm. Các biến số này có thể có hoặc không.
Cách gọi hàm thì gọi ra đúng tên hàm mình đã khai báo, biến số có thể truyền vào hoặc không tuỳ theo hàm mà mình đã khai báo. Ví dụ: ten_ham(bien1, bien2)
Các lưu ý:
  • Thứ nhất, khi kết thúc 1 dòng lệnh thì không cần dấu “chấm phẩy” như ngôn ngữ PHP hay Javascript. Ví dụ
Ví dụ 1

def tong_hai_so (a, b)

puts "Tổng 2 số là:"

tong = a + b

puts tong

end

– Thứ hai, không cần return về giá trị cuối cùng của hàm, mặc định hàm trong Ruby thì giá trị cuối cùng sẽ tự động được return. Đối với javascript hay php thì khi khai báo 1 hàm thì phải có giá trị trả về của hàm bằng từ khoá return, còn Ruby thì không cần. Ví dụ:
Ví dụ 2

def tong_hai_so (a, b)

a + b

a - b # dòng này sẽ được return về, bởi vì nó là giá trị cuối cùng được trả về trong hàm

end

Khi gọi hàm tong_hai_so(10, 5) thì kết quả sẽ là 10 – 5 = 5, không phải 10 + 5 = 15. Bởi vì giá trị cuối cùng trả về của hàm là 10 – 5 (tức a – b). Đây là điểm mạnh của Ruby so với các ngôn ngữ khác.
– Thứ ba, dùng từ khoá “return” trong hàm khi ta muốn trả về một giá trị bất kỳ. Ví dụ:
Ví dụ 3:

def tong_hai_so (a, b)

return a + b

a - b # dòng này sẽ không được trả về bởi vì nằm sau từ khoá return

end

Khi gọi hàm tong_haI_so(10, 5) thì kết quả sẽ là 10 + 5 = 15, không phải 10 – 5 = 5. Bởi vì ta dùng từ khoá return tại dòng a + b, khi gặp từ khoá return thì hàm sẽ tính toán và dừng lại, những dòng code bên dưới lệnh return sẽ không thực thi. Nếu bạn nào đã từng học về lập trình thì sẽ thấy cách hoạt động của return trong Ruby củng giống như các ngôn ngữ khác.
– Thứ tư, khi gọi hàm và truyền biến vào trong hàm ta có thể có hoặc không dấu ngoặc tròn () để chứa biến. Ví dụ ta gọi hàm bằng 2 cách sau đều được:
Ví dụ 4

tong_hai_so(10, 5)

# hoặc

tong_hai_so 10, 5

– Thứ năm, khai báo giá trị mặc định cho biến trong hàm
Ví dụ 5

def tong_hai_so (a = 0, b = 0)

a + b

end

Ở trên ta đã khai báo giá trị mặc định cho biến a và b, cho nên khi gọi hàm tong_hai_so ta có thể truyền biến hoặc không truyền biến hàm vẫn chạy bình thường không có lỗi. Ở các ví dụ trên buộc ta phải truyền hai biến a và b nếu không hàm sẽ báo lỗi “wrong number of arguments”