【发布时间】:2014-01-25 10:13:24
【问题描述】:
Tcl::instance().eval(at->proc_); ns2 中的指令。您能否解释一下在两个函数之间放置点运算符的概念,就好像我没有弄错instance() 和eval() 都是函数一样,而且我从来没有遇到过这样的概念,其中一个函数通过使用点运算符调用另一个函数。
【问题讨论】:
Tcl::instance().eval(at->proc_); ns2 中的指令。您能否解释一下在两个函数之间放置点运算符的概念,就好像我没有弄错instance() 和eval() 都是函数一样,而且我从来没有遇到过这样的概念,其中一个函数通过使用点运算符调用另一个函数。
【问题讨论】:
对Tcl::instances一无所知的猜测:
Tcl::instance 是一个返回某个对象的函数。该对象有一个名为eval 的方法。程序员认为命名返回的对象不合适,而是直接在结果上调用方法。
struct Bar {
Baz getBaz();
}
struct Foo {
Bar getBar();
}
Foo foo = new Foo;
// the next two lines...
Bar bar = foo.getBar();
Baz baz = bar.getBaz();
// are exactly the same as this next line
baz = foo.getBar().getBaz();
【讨论】:
Tcl 是一个单例,您使用静态方法 instance 获取当前实例,这将返回对Tcl 类型对象的引用。 您使用:: 访问类的静态成员。然后,您可以使用通常的. 表示法在此类对象上调用方法。
那一行是以下的简写:
Tcl &tcl = Tcl::instance();
tcl.eval(at->proc_);
Here 是Tcl::instance 调用的简短参考:
类的单个实例在~tclcl/Tcl.cc 中声明为静态成员变量;程序员必须获得对该实例的引用才能访问本节中描述的其他方法。访问此实例所需的语句是:
Tcl& tcl = Tcl::instance();
【讨论】: