2009-02-02 23 views
8

मैंने हाल ही में मॉड्यूल MooseX::Declare का उपयोग शुरू किया। मैं इसे अपने वाक्यविन्यास के लिए प्यार करता हूँ। यह सुरुचिपूर्ण और साफ है। क्या कोई ऐसे मामलों में आया है जहां आप कक्षाओं के भीतर कई कार्यों (उनमें से कुछ बड़े) लिखना चाहते हैं और कक्षा परिभाषा पृष्ठों में चल रही है? कक्षा परिभाषा को केवल घोषित कार्यों और कक्षा के बाहर वास्तविक कार्य परिभाषा के लिए कोई कामकाज करने के लिए कोई कामकाज है?क्या मैं MooseX :: घोषणा का उपयोग कर कक्षा के बाहर फ़ंक्शंस को परिभाषित कर सकता हूं?

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); 
} 

मैं देख सकता हूँ वर्ग परिवर्तनशील बनाने के लिए एक तरह से है कि वहाँ -

मैं किन पहलुओं पर विचार कर रहा हूँ कुछ इस तरह है। क्या कोई जानता है इसे कैसे करना है?

उत्तर

7

आसान (लेकिन दस्तावेज़ में जोड़ने की आवश्यकता है)।

class BankAccount is mutable { 
} 

एक तरफ, आप कक्षा के बाहर अपने तरीकों को परिभाषित क्यों कर रहे हैं?

तुम बस जा सकते हैं

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

मैं अपने वर्ग परिभाषा कम होना चाहता हूँ, और क्या वर्ग के लिए है की एक अमूर्त विचार देने के लिए। मुझे सी ++ में ऐसा करने का तरीका पसंद है जहां आपके पास स्कोप रिज़ॉल्यूशन ऑपरेटर का उपयोग करके कक्षा में इनलाइन या कक्षा के बाहर परिभाषित करने का विकल्प है। यह वर्ग परिभाषा को छोटा और साफ बनाता है। यही है जिसकी मेरे द्वारा तलाश की जा रही है।

आपके समय के लिए धन्यवाद।

+0

लेखक को एक ईमेल भेजें, उसके उत्कृष्ट काम के लिए धन्यवाद, उसे बताएं कि आप वाक्यविन्यास से प्यार करते हैं, और फिर उससे पूछें कि क्या उसे लगता है कि ऐसी चीज संभव है, और यदि वह ऐसा करने के इच्छुक होगा। सबसे खराब हो सकता है कि वह 'नहीं' कह सकता है। पोस्ट करने के लिए एक और जगह मूस मेलिंग सूची होगी। – daotoad

संबंधित मुद्दे

 संबंधित मुद्दे