Hàm
Để định nghĩa một hàm chúng ta sử dụng cấu trúc như sau:
def function_name
# code goes here
end
Xem ví dụ sau:
def greet
puts "Hello"
end
Giá Trị Trả Về
Thác với các ngôn ngữ khác, trong Ruby hàm luôn trả về giá trị khi nó được gọi. Bạn có thể sử dụng từ khóa return hoặc nếu không có từ khóa này trong hàm thì Ruby sẽ lấy giá trị được ước lượng của câu lệnh cuối cùng trong hàm. Ví dụ:
def test1
3
end
p test1
def test2
print "Hello"
end
p test2
Trong ví dụ thứ 2, chúng ta thấy kết quả hiển thị là giá trị nil. Trường hợp này do biểu thức print "Hello" được Ruby ước lượng về giá trị là nil. Ở đây chúng ta cũng sử dụng hàm p thay vì print, sử dụng p thì giá trị nil sẽ vẫn được hiển thị.
Tham Số và Đối Số
Một hàm có thể có tham số, tham số được sử dụng để đưa dữ liệu vào bên trong hàm. Ví dụ dưới, a và b được gọi là tham số của hàm sum:
def sum(a, b)
a + b
end
Khi gọi hàm sum, bạn cần cung cấp 2 giá trị thực tế cho tham số a và b. 2 giá trị này được gọi là đối số:
puts sum(2, 3)
Biến
Biến được dùng để lưu dữ liệu khi chạy chương trình. Giá trị của biến có thể thay đổi trong quá trình chạy trương trình.
price = 500 puts price price += 10 puts price
Khi một biến được định nghĩa trong một hàm thì phạm vi của biến này chỉ giới hạn bên trong hàm đó.
def variable_scope
price = 5
end
variable_scope
puts price
Kết quả của đoạn mã trên:
fn.rb:6:in `<main>': undefined local variable or method `price' for main:Object (NameError)
Tương tự, khi một biến được định nghĩa ở ngoài hàm thì nó cũng ko thể được sử dụng bên trong hàm.
price = 5
def variable_scope
puts price
end
variable_scope
Kết quả hiển thị của đoạn code trên:
fn.rb:5:in `variable_scope': undefined local variable or method `price' for main:Object (NameError)
from fn.rb:7:in `<main>'
Tuy nhiên khi sử dụng biến global (toàn cục) thì bạn có thể sử dụng được nó bên trong hàm ngay cả khi nó không được khởi tạo bên trong hàm:
$price = 5
def variable_scope
puts $price
end
variable_scope
Ngược lại khi một biến được khởi tạo trong hàm là biến global thì khi hàm được gọi, biến này sẽ tồn trại trong phạm vi ngoài hàm:
def variable_scope
$price = 5
end
variable_scope
puts $priceNguồn: CodeHub.vn
Không có nhận xét nào:
Đăng nhận xét