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 undefalias , 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