github.com/xyproto/u-root@v6.0.1-0.20200302025726-5528e0c77a3c+incompatible/cmds/core/elvish/eval/vars/callback.go (about) 1 package vars 2 3 type callback struct { 4 set func(interface{}) error 5 get func() interface{} 6 } 7 8 // FromSetGet makes a variable from a set callback and a get callback. 9 func FromSetGet(set func(interface{}) error, get func() interface{}) Var { 10 return &callback{set, get} 11 } 12 13 func (cv *callback) Set(val interface{}) error { 14 return cv.set(val) 15 } 16 17 func (cv *callback) Get() interface{} { 18 return cv.get() 19 } 20 21 type roCallback func() interface{} 22 23 // FromGet makes a variable from a get callback. The variable is read-only. 24 func FromGet(get func() interface{}) Var { 25 return roCallback(get) 26 } 27 28 func (cv roCallback) Set(interface{}) error { 29 return errRoCannotBeSet 30 } 31 32 func (cv roCallback) Get() interface{} { 33 return cv() 34 }