2009-02-02 29 views
8

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 đó?

Trả lời

7

Dễ dàng (nhưng cần thêm tài liệu).

class BankAccount is mutable { 
} 

Ngoài ra, tại sao bạn xác định phương pháp của mình bên ngoài lớp học?

Bạn chỉ có thể đi

class BankAccount is mutable { 
    method foo (Int $bar) { 
     # do stuff 
    } 
} 
0

tôi muốn định nghĩa lớp học của tôi là ngắn, và đưa ra một ý tưởng trừu tượng của những gì các lớp là cho. Tôi thích cách nó được thực hiện trong C++, nơi bạn có một tùy chọn để định nghĩa các hàm nội tuyến hoặc bên ngoài lớp bằng cách sử dụng toán tử phân giải phạm vi. Điều này làm cho định nghĩa lớp ngắn gọn và gọn gàng. Đây là những gì tôi đang tìm kiếm.

Cảm ơn thời gian của bạn.

+0

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

Các vấn đề liên quan