- vừa được xem lúc

3 cách tạo ra class methods private trong Ruby

0 0 26

Người đăng: Nguyen Phi Viet

Theo Viblo Asia


Tổng quan về các cách khác nhau để đặt các phương thức lớp ở chế độ riêng tư trong Ruby


private_class_method

Phương thức này nhận một hoặc nhiều method_ids làm đối số. Một method_id có thể là một String hoặc một Symbol đại diện cho một phương thức lớp hiện có trong ngữ cảnh của chính nó. private_class_method làm cho phương thức tương ứng với method_id được truyền dưới dạng đối số private

class A def self.hello puts "Hello, I'm A." end private_methods(false).include?(:hello) # => false private_class_method :hello private_methods(false).include?(:hello) # => true
end

Ở đây chúng ta có thể thấy rằng bằng cách chuyển :hello làm đối số của private_class_method, phương thức lớp A::hello trở thành private.

Bây giờ chúng ta hãy xem một cách khác để đặt các phương thức lớp ở chế độ private bằng cách sử dụng private_class_method

class A private_class_method def self.hello puts "Hello, I'm A." end private_methods(false).include?(:hello) # => true
end

Ở đây private_class_method lấy định nghĩa class method hello làm tham số. Sau đó, chúng ta có thể thấy rằng class methods hello của chúng ta là private.

Để hiểu điều gì xảy ra ở đây, hãy sửa đổi một chút code của chúng ta:

class A method_id = def self.hello puts "Hello, I'm A." end method_id # => :hello private_class_method method_id private_methods(false).include?(:hello) # => true
end

Ở đây chúng ta lưu trữ giá trị trả về của định nghĩa class method hello trong method_id. Sau đó, chúng ta chuyển method_id (chứa :hello) đến private_class_method. Tại thời điểm này, class method hello trở thành private.

Vì vậy, khi một định nghĩa phương thức trả về định danh phương thức, chúng ta có thể chuyển trực tiếp định nghĩa phương thức làm đối số của private_class_method.

class << self và private

Cách cổ điển để đặt các phương thức lớp ở chế độ riêng tư là mở class eigenclass và sử dụng từ khóa private trên các phương thức cá thể của class eigenclass - cái mà bạn thường gọi là class methods.

Xem thêm về eigenclass

class A def self.hello puts "Hello, I'm A." end class << self private :hello end private_methods(false).include?(:hello) # => true
end

Ở đây, chúng ta chỉ cần mở eigenclass và đặt phương thức lớp hello ở chế độ private.

Bình luận

Bài viết tương tự

- vừa được xem lúc

Giới thiệu về Hash trong Ruby và Rails

. Hash là một cấu trúc dữ liệu lưu trữ bằng các khóa liên quan. Điều này trái ngược với array lưu trữ các mục theo một chỉ mục có thứ tự.

0 0 27

- vừa được xem lúc

Ghi đè phương thức private của superclass trong Ruby

. Bài viết được dịch từ bài Overriding private methods of superclass in Ruby của tác giả Mehdi Farsi. Vì Ruby là một ngôn ngữ OOP, một class có thể kế thừa từ một class khác.

0 0 17

- vừa được xem lúc

Asset Pipeline là cái chi chi?

Asset Pipeline. Asset pipeline là cái chi chi. . Giải thích:.

0 0 47

- vừa được xem lúc

Login with Jwt

Ở bài viết trước mình đã mô tả về Jwt, tiếp theo đây hãy cùng tạo ra 1 function login đơn giản . 1. Gem Jwt. gem "jwt".

0 0 25

- vừa được xem lúc

Cùng xây dựng app Ajax đơn giản trong Rails

Chúng ta cùng thử viết một Web app đơn giản có sử dụng Ajax bằng Ruby on Rails nhé! . Trong bài viết mình sẽ nói thẳng vào cách xây dựng ajax luôn nên nếu các bạn chưa nắm được cách viết 1 app CRUD bằ

0 0 27

- vừa được xem lúc

[Ruby] Tìm hiểu kế thừa trong ruby

Chắc hẳn mỗi người trong chúng ta khi học hay làm việc thì đã nghe đến khái niệm kế thừa. .

0 0 24