Tcl::instance().eval(at->proc_);
инструкция в нс2. Можете ли вы объяснить концепцию размещения оператора точки между двумя функциями, как будто я не ошибаюсь оба instance()
а также eval()
являются функциями, и я никогда не подходил к такому понятию, когда одна функция вызывает другую, используя оператор точки.
Дикая догадка, ничего не зная о Tcl::instance
s:
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_);
Вот краткий справочник для Tcl::instance
вызов:
Один экземпляр класса объявлен в ~ tclcl / Tcl.cc как статическая переменная-член; программист должен получить ссылку на этот экземпляр для доступа к другим методам, описанным в этом разделе. Оператор, необходимый для доступа к этому экземпляру:
Tcl& tcl = Tcl::instance();