Comments (1)
The previous problem has been solved.
But a new problem has arisen. The values of members in the native object cannot be changed in the script. What method can be used to solve this problem?
native module code:
type MyPos struct {
X, Y int
}
func (mp *MyPos) GetTengoObject() tengo.Object {
return &tengo.Map{
Value: map[string]tengo.Object{
"x": &tengo.Int{Value: int64(mp.X)},
"y": &tengo.Int{Value: int64(mp.Y)},
"print": &tengo.UserFunction{
Name: "print",
Value: func(args ...tengo.Object) (ret tengo.Object, err error) {
mp.Print()
return tengo.UndefinedValue, nil
},
},
},
}
}
func (mp *MyPos) Print() {
log.Printf("[native] X:%d Y:%d", mp.X, mp.Y)
}
func newMyPos(args ...tengo.Object) (ret tengo.Object, err error) {
myPos := &MyPos{X: 1, Y: 2}
return myPos.GetTengoObject(), nil
}
var PosModule = &tengo.BuiltinModule{
Attrs: map[string]tengo.Object{
"newMP": &tengo.UserFunction{
Name: "new",
Value: newMyPos,
},
},
}
script code:
md := import("myModule")
p1 := md.newMP()
p1.x += 123
p1.y = 234
log("x:%d y:%d", p1.x, p1.y) // output script object field value
p1.y -= 11
p1.print() // output native object field value
output:
2024/02/23 11:48:49 [scp] x:124 y:234
2024/02/23 11:48:49 [native] X:1 Y:2 // why hasn't it changed?
from tengo.
Related Issues (20)
- provide compiled.CloneWithoutGlobals() or make compiled's fields accessible
- Is there a example on the use of `Regexp`
- VSCode Extention Support & Monaco-editor language support, EBNF is wanted.
- Does Tengo Playground support code format or code compress?
- [Performance Improvement] Using pool to avoid stack and frames memory allocation
- Any plan to add settrace() functionality to VM?
- Changing Owners? HOT 2
- Isolated VM possible ? HOT 2
- Ability to call a CompiledFunc from a UserFunc @kcsampson this functionality is now available in the `tengo2` branch. The `Callable` interface and `CallableFunc` signatures have changed, so you might need to update your code to support that, but you will be able to call back to tengo code from go code provided you make the call from the same goroutine the VM is running on. HOT 1
- Support for centralized configuration and shared variables in separate Tengo scripts HOT 1
- FromInterface support HOT 1
- bug:invalid jump position:0 HOT 13
- binaryop and equals diff HOT 1
- Lack of means to obtain vm context
- UX improvement: conditionalize the installation of rescue handler...
- FYI: wasm-compiled tengo playground running in a browser HOT 2
- Allow removal of specific attributes from builtin module
- Is there a plan to develop a VSCode plugin for Tengo to support Tengo code debugging?
- Map-object methods
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from tengo.