chức năng bạn phải cẩn thận với điều này, bởi vì nếu lớp học của bạn phải trải qua bất kỳ thay đổi trạng thái (thêm , thay đổi hằng số, cla ss biến, vv) nhà nước rằng lớp học của bạn là trong khi bí danh được khởi tạo sẽ không phản ánh những thay đổi được cập nhật trong lớp học của bạn.
Để tránh đường hầm cổ tay mà không bị mất khả năng đọc, bạn có thể lưu trữ lambda trong đối tượng bí danh của mình thay vì lớp thực tế. Tất nhiên, lambda chứa các lớp nhưng điều này đảm bảo bí danh của bạn sẽ gọi lên phiên bản mới nhất của lớp học của bạn.
Tôi đặt mã này vào bộ khởi tạo đường ray supermanpatches.rb
(bên trong config/initializers/
) & Dagger;
LAP = lambda { LosAngelesParcel }
Bây giờ bạn có thể gọi đây là sử dụng LAP[]
và một phiên bản mới đúc của lớp học của bạn sẽ được nạp. (Cho phép bạn tạo các trường hợp, ví dụ: l = LAP[].new
)
& Dagger; chạy một lần khi đường ray được tải & sau đó phổ biến thông qua ứng dụng của bạn, có thể gọi bất kỳ nơi nào giống như biến toàn cục nhưng 'chỉ đọc', vì vậy, hãy nói.
Nguồn
2013-11-03 22:27:16
Còn thừa kế thì sao? Một cái gì đó như thế này: class Coupon
WarHog