2016-05-03 32 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