Gần đây, tôi đã bắt đầu sử dụng mô-đun MooseX::Declare. Tôi thích nó cho cú pháp của nó. Nó thanh lịch và gọn gàng. Có ai đi qua trường hợp, nơi bạn sẽ muốn viết nhiều chức năng (một số người trong số họ lớn) bên trong một lớp học và định nghĩa lớp chạy vào các trang? Có cách nào khác để làm cho định nghĩa lớp chỉ có các hàm được khai báo và định nghĩa hàm thực bên ngoài lớp không?Tôi có thể định nghĩa các hàm ngoài một lớp bằng MooseX :: Declare không?
Những gì tôi đang tìm kiếm là một cái gì đó như thế này -
class BankAccount {
has 'balance' => (isa => 'Num', is => 'rw', default => 0);
# Functions Declaration.
method deposit(Num $amount);
method withdraw(Num $amount);
}
# Function Definition.
method BankAccount::deposit (Num $amount) {
$self->balance($self->balance + $amount);
}
method BankAccount::withdraw (Num $amount) {
my $current_balance = $self->balance();
($current_balance >= $amount)
|| confess "Account overdrawn";
$self->balance($current_balance - $amount);
}
tôi có thể thấy rằng có một cách để làm cho lớp có thể thay đổi. Có ai biết làm thế nào để làm điều đó?
Gửi email cho tác giả, cảm ơn ông vì công việc tuyệt vời của ông, nói với ông rằng bạn yêu cú pháp, và sau đó hỏi xem liệu ông có nghĩ điều đó là có thể không, và liệu ông có sẵn sàng làm điều đó hay không. Điều tồi tệ nhất có thể xảy ra là anh ta có thể nói 'không'. Một địa điểm khác để đăng sẽ là danh sách gửi thư của con nai sừng tấm. – daotoad