Сценарий: Структура с вызовом метода и свойства другого объекта
Этот коммит содержится в:
родитель
74a6ab6231
коммит
56fe611154
2 изменённых файлов: 42 добавлений и 2 удалений
|
@ -87,8 +87,13 @@ func handleSelectorExpr(expr ast.Expr) string {
|
|||
code := ""
|
||||
switch x := s.X.(type) {
|
||||
case *ast.Ident:
|
||||
if isInMethod && x.Name == currentReceiverName {
|
||||
code += "this->"
|
||||
if isInMethod {
|
||||
if x.Name == currentReceiverName {
|
||||
code += "this"
|
||||
} else {
|
||||
code += handleIdentExpr(x)
|
||||
}
|
||||
code += "->"
|
||||
} else {
|
||||
code += handleIdentExpr(x)
|
||||
code += "."
|
||||
|
|
|
@ -161,3 +161,38 @@ this->x=1;
|
|||
this->x=this->y;
|
||||
}
|
||||
```
|
||||
|
||||
Сценарий: Структура с вызовом метода и свойства другого объекта
|
||||
* Исходник:
|
||||
```
|
||||
package test
|
||||
|
||||
type device struct {
|
||||
x int
|
||||
}
|
||||
|
||||
func (d *device) doSomething() {
|
||||
dev2.doSomethingElse()
|
||||
}
|
||||
func (d *device) doSomethingElse() {
|
||||
dev2.x = 1
|
||||
d.x = dev2.x
|
||||
}
|
||||
```
|
||||
* Результат:
|
||||
```
|
||||
class device {
|
||||
public:
|
||||
int x;
|
||||
void doSomething();
|
||||
void doSomethingElse();
|
||||
};
|
||||
void device::doSomething() {
|
||||
dev2->doSomethingElse();
|
||||
}
|
||||
void device::doSomethingElse() {
|
||||
dev2->x=1;
|
||||
this->x=dev2->x;
|
||||
}
|
||||
```
|
||||
|
||||
|
|
Загрузка…
Создание таблицы
Сослаться в новой задаче