Ruby - Phương thức
Các phương thức của Ruby rất giống với các hàm trong bất kỳ ngôn ngữ lập trình nào khác. Các phương thức Ruby được sử dụng để gói một hoặc nhiều câu lệnh lặp lại thành một đơn vị duy nhất.
Tên phương thức phải bắt đầu bằng một chữ cái thường. Nếu bạn bắt đầu một tên phương thức bằng chữ hoa, Ruby có thể nghĩ rằng nó là một hằng số và do đó có thể phân tích cú pháp cuộc gọi không chính xác.
Các phương thức nên được xác định trước khi gọi chúng, nếu không Ruby sẽ đưa ra một ngoại lệ cho việc gọi phương thức không xác định.
Cú pháp
def method_name [( [arg [= default]]...[, * arg [, &expr ]])]
expr..
end
Vì vậy, bạn có thể xác định một phương pháp đơn giản như sau:
def method_name
expr..
end
Bạn có thể biểu diễn một phương thức chấp nhận các tham số như thế này -
def method_name (var1, var2)
expr..
end
Bạn có thể đặt các giá trị mặc định cho các tham số, sẽ được sử dụng nếu phương thức được gọi mà không chuyển các tham số bắt buộc -
def method_name (var1 = value1, var2 = value2)
expr..
end
Bất cứ khi nào bạn gọi phương thức đơn giản, bạn chỉ viết tên phương thức như sau:
method_name
Tuy nhiên, khi bạn gọi một phương thức có tham số, bạn viết tên phương thức cùng với các tham số, chẳng hạn như -
method_name 25, 30
Hạn chế quan trọng nhất khi sử dụng các phương thức có tham số là bạn cần nhớ số lượng tham số bất cứ khi nào bạn gọi các phương thức như vậy. Ví dụ, nếu một phương thức chấp nhận ba tham số và bạn chỉ truyền hai tham số, thì Ruby sẽ hiển thị lỗi.
Thí dụ
#!/usr/bin/ruby
def test(a1 = "Ruby", a2 = "Perl")
puts "The programming language is #{a1}"
puts "The programming language is #{a2}"
end
test "C", "C++"
test
Điều này sẽ tạo ra kết quả sau:
The programming language is C
The programming language is C++
The programming language is Ruby
The programming language is Perl
Trả lại giá trị từ các phương thức
Mọi phương thức trong Ruby đều trả về một giá trị theo mặc định. Giá trị trả về này sẽ là giá trị của câu lệnh cuối cùng. Ví dụ -
def test
i = 100
j = 10
k = 0
end
Phương thức này khi được gọi sẽ trả về biến k được khai báo cuối cùng .
Câu lệnh trả về Ruby
Câu lệnh return trong ruby được sử dụng để trả về một hoặc nhiều giá trị từ một Phương thức Ruby.
Cú pháp
return [expr[`,' expr...]]
Nếu có nhiều hơn hai biểu thức, mảng chứa các giá trị này sẽ là giá trị trả về. Nếu không có biểu thức nào được đưa ra, nil sẽ là giá trị trả về.
Thí dụ
return
OR
return 12
OR
return 1,2,3
Hãy xem ví dụ này -
#!/usr/bin/ruby
def test
i = 100
j = 200
k = 300
return i, j, k
end
var = test
puts var
Điều này sẽ tạo ra kết quả sau:
100
200
300
Số lượng biến các tham số
Giả sử bạn khai báo một phương thức nhận hai tham số, bất cứ khi nào bạn gọi phương thức này, bạn cần truyền hai tham số cùng với nó.
Tuy nhiên, Ruby cho phép bạn khai báo các phương thức hoạt động với một số lượng tham số thay đổi. Hãy để chúng tôi kiểm tra một mẫu của điều này -
#!/usr/bin/ruby
def sample (*test)
puts "The number of parameters is #{test.length}"
for i in 0...test.length
puts "The parameters are #{test[i]}"
end
end
sample "Zara", "6", "F"
sample "Mac", "36", "M", "MCA"
Trong đoạn mã này, bạn đã khai báo một mẫu phương thức chấp nhận một kiểm tra tham số. Tuy nhiên, tham số này là một tham số biến. Điều này có nghĩa là tham số này có thể nhận bất kỳ số lượng biến nào. Vì vậy, đoạn mã trên sẽ tạo ra kết quả sau:
The number of parameters is 3
The parameters are Zara
The parameters are 6
The parameters are F
The number of parameters is 4
The parameters are Mac
The parameters are 36
The parameters are M
The parameters are MCA
Phương pháp lớp học
Khi một phương thức được định nghĩa bên ngoài định nghĩa lớp, phương thức đó được đánh dấu là private theo mặc định. Mặt khác, các phương thức được định nghĩa trong định nghĩa lớp được đánh dấu là công khai theo mặc định. Khả năng hiển thị mặc định và dấu riêng tư của các phương thức có thể được thay đổi bằng công khai hoặc riêng tư của Mô-đun.
Bất cứ khi nào bạn muốn truy cập một phương thức của một lớp, trước tiên bạn cần khởi tạo lớp đó. Sau đó, bằng cách sử dụng đối tượng, bạn có thể truy cập bất kỳ thành viên nào của lớp.
Ruby cung cấp cho bạn một cách để truy cập một phương thức mà không cần khởi tạo một lớp. Hãy để chúng tôi xem cách một phương thức lớp được khai báo và truy cập -
class Accounts
def reading_charge
end
def Accounts.return_date
end
end
Xem phương thức return_date được khai báo như thế nào. Nó được khai báo với tên lớp theo sau là dấu chấm, theo sau là tên của phương thức. Bạn có thể truy cập phương thức lớp này trực tiếp như sau:
Accounts.return_date
Để truy cập phương thức này, bạn không cần tạo đối tượng của các Tài khoản lớp.
Tuyên bố bí danh Ruby
Điều này cung cấp bí danh cho các phương thức hoặc biến toàn cục. Không thể xác định bí danh trong phần thân phương thức. Bí danh của phương thức giữ nguyên định nghĩa hiện tại của phương thức, ngay cả khi các phương thức bị ghi đè.
Việc tạo bí danh cho các biến toàn cục được đánh số ($ 1, $ 2, ...) bị cấm. Ghi đè các biến toàn cục tích hợp sẵn có thể gây ra sự cố nghiêm trọng.
Cú pháp
alias method-name method-name
alias global-variable-name global-variable-name
Thí dụ
alias foo bar
alias $MATCH $&
Ở đây chúng tôi đã xác định bí danh foo cho bar và $ MATCH là bí danh cho $ &
Câu lệnh Ruby undef
Điều này hủy bỏ định nghĩa phương pháp. Một undef không thể xuất hiện trong thân phương thức.
Bằng cách sử dụng undef và alias , giao diện của lớp có thể được sửa đổi độc lập với lớp cha, nhưng lưu ý rằng nó có thể bị phá vỡ các chương trình bởi lệnh gọi phương thức nội bộ.
Cú pháp
undef method-name
Thí dụ
Để hủy xác định một phương thức có tên là bar, hãy làm như sau:
undef bar