Moose::Manual::Attributes trạng thái:Tại sao công cụ xây dựng của Moose lấy giá trị chuỗi?
Là một thay thế cho việc sử dụng một tài liệu tham khảo chương trình con [cho mặc định], bạn thay vì có thể cung cấp một phương pháp xây dựng cho thuộc tính của bạn: ... này có một số lợi thế. Đầu tiên, nó di chuyển một đoạn mã sang phương thức được đặt tên riêng của nó, giúp cải thiện khả năng đọc và tổ chức mã.
Vì vậy, thuộc tính của bạn có thể xác định một mặc định thusly:
has attr => (
is => 'ro',
builder => 'subroutine'
);
sub subroutine {
# figure out and return default value
}
Tôi không hiểu lý do tại sao điều này đã được tách biệt với mặc định. Bạn không thể chuyển một tham chiếu đến một chương trình con được đặt tên?
has attr => (
is => 'ro',
default => \&subroutine
);
Và đó không phải là thực hành lập trình tốt hơn, vì bạn được đảm bảo không vô tình tham chiếu đến chương trình con không tồn tại? Bạn muốn tham chiếu đến phương thức với tham chiếu logic thay vì tham chiếu tượng trưng.
Vâng, tôi biết nó không phải là một tham chiếu trong ý nghĩa Perl; Tôi đã chỉ nghĩ rằng thực hành lập trình tốt hơn sẽ là để vượt qua một tham chiếu thực sự đến một chương trình con được đặt tên, vì những lý do tôi đã đề cập. Tuy nhiên, bạn nói đúng; phần còn lại của hướng dẫn không cho thấy lý do tại sao nó là mong muốn ... – skiphoppy
Lưu ý đoạn bắt đầu "Điều này có một số lợi thế. Đầu tiên ..."; có lẽ nó sẽ giúp di chuyển một số phần tiếp theo lên đó để theo dõi vì vậy đoạn văn cho nhiều hơn chỉ là một lợi thế, sớm hơn một chút cho những người đang tự hỏi. – skiphoppy