Сценарий: Вызов вложенных методов динамически созданного объекта
Этот коммит содержится в:
родитель
9b117e1676
коммит
dec79ad2f3
2 изменённых файлов: 42 добавлений и 11 удалений
|
@ -105,21 +105,14 @@ func handleSelectorExpr(s *ast.SelectorExpr) (code string) {
|
|||
|
||||
switch x := s.X.(type) {
|
||||
case *ast.Ident:
|
||||
if isInMethod {
|
||||
if x.Name == currentReceiverName {
|
||||
code += "this"
|
||||
} else {
|
||||
code += handleIdentExpr(x)
|
||||
}
|
||||
code += "->"
|
||||
if isInMethod && x.Name == currentReceiverName {
|
||||
code += "this"
|
||||
} else {
|
||||
code += handleIdentExpr(x)
|
||||
code += "->"
|
||||
}
|
||||
case *ast.SelectorExpr:
|
||||
code += "this"
|
||||
code += "->"
|
||||
code += handleIdentExpr(x.Sel)
|
||||
case *ast.SelectorExpr:
|
||||
code += handleSelectorExpr(x)
|
||||
code += "->"
|
||||
}
|
||||
code += handleIdentExpr(s.Sel)
|
||||
|
|
|
@ -260,6 +260,44 @@ public:
|
|||
void device::doSomething() {
|
||||
this->remote->doSomethingElse();
|
||||
}
|
||||
```
|
||||
|
||||
Сценарий: Вызов вложенных методов динамически созданного объекта
|
||||
* Исходник:
|
||||
```
|
||||
package test
|
||||
|
||||
type device struct {
|
||||
}
|
||||
|
||||
func (d *device) doSomething() {
|
||||
n := NewOther()
|
||||
n.G.x()
|
||||
n.G.x.x2.x3()
|
||||
}
|
||||
func main() {
|
||||
n := NewOther()
|
||||
n.G.x()
|
||||
n.G.x.x2.x3()
|
||||
}
|
||||
```
|
||||
* Результат:
|
||||
```
|
||||
class device {
|
||||
public:
|
||||
void doSomething();
|
||||
};
|
||||
void main();
|
||||
void device::doSomething() {
|
||||
auto n=NewOther();
|
||||
n->G->x();
|
||||
n->G->x->x2->x3();
|
||||
}
|
||||
void main() {
|
||||
auto n=NewOther();
|
||||
n->G->x();
|
||||
n->G->x->x2->x3();
|
||||
}
|
||||
```
|
||||
|
||||
Сценарий: Структура с вызовом методов со входящими и выходящими параметрами
|
||||
|
|
Загрузка…
Создание таблицы
Сослаться в новой задаче