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