2016-05-03 80 views
0

我在查找關於012k和TK::Submethods的聲明,經常在Tk widget源文件中找到。我搜索了網頁和堆棧溢出,並沒有找到任何有用的信息。什麼是Perl Tk :: Methods和Tk :: Submethods語句的用法?

我特別調查了Tk::Text小部件的實現。 例如,

Tk::Methods (... 'insert'...)

難道這不是意味着聲明有insertTk::Text部件內的方法呢?

我找不到任何參考insert子程序?

我確實找到Insert(注意大寫I),Tk::Methods也是這樣操縱輸入字符串的嗎?

回答

2

有沒有useMethods是在Tk.pm中聲明的子程序,許多小部件只是叫它。

子程序的目的可能與使用情況猜測,或將其從源(UTSL):

sub Methods 
{ 
my ($package) = caller; 
no strict 'refs'; 
foreach my $meth (@_) 
    { 
    my $name = $meth; 
    *{$package."::$meth"} = sub { shift->WidgetMethod($name,@_) }; 
    } 
} 

它會在調用者的名字空間給定的方法,即

package MyWidget; 
Tk::Methods('insert'); 

會在MyWidget類中創建insert方法,該類將實現爲

shift->WidgetMethod('insert', @_) 
+0

那麼爲什麼要宣佈它,如果沒有使用它呢? – NirMH

+0

@NirMH:有使用,沒有[使用](http://p3rl.org/use)。 – choroba

+0

修復了代碼片段。這個子程序的用法是什麼? – NirMH