本文整理汇总了Golang中github.com/gocircuit/escher/kit/plumb.Eye类的典型用法代码示例。如果您正苦于以下问题:Golang Eye类的具体用法?Golang Eye怎么用?Golang Eye使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Eye类的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: Cognize
func (x *choose) Cognize(eye *plumb.Eye, dvalve string, dvalue interface{}) {
x.Lock()
defer x.Unlock()
switch dvalve {
case "From":
x.from = dvalue.(Image)
case "When":
x.when = dvalue
case "_":
default:
panic("eh")
}
j := rand.Intn(x.from.Len())
for i, key := range x.from.Names() {
if i != j {
continue
}
eye.Show(
"_",
Image{
"When": x.when,
"Choice": x.from[key],
},
)
}
}
示例2: Cognize
func (x *join) Cognize(eye *plumb.Eye, dvalve string, dvalue interface{}) {
x.Lock()
defer x.Unlock()
switch dvalve {
case "Head":
head := dvalue.(string)
x.head = &head
case "Tail":
tail := dvalue.(string)
x.tail = &tail
default:
return
}
if x.head == nil || x.tail == nil {
return
}
eye.Show("_", path.Join(*x.head, *x.tail))
}
示例3: Cognize
func (x *strobe) Cognize(eye *plumb.Eye, dvalve string, dvalue interface{}) {
switch dvalve {
case "Charge":
select {
case y := <-x.when: // if a when is already waiting, couple it with the charge and send a strobe pair
eye.Show("Strobe", New().Grow("When", y).Grow("Charge", dvalue))
default: // otherwise remember the charge
x.charge <- dvalue
}
case "When":
select {
case y := <-x.charge: // if a charge is already waiting, couple it with the when and send a strobe pair
eye.Show("Strobe", New().Grow("When", dvalue).Grow("Charge", y))
default: // otherwise remember the when
x.when <- dvalue
}
}
}
示例4: loop
func (h *memory) loop(eye *plumb.Eye) {
var root = &space{
Space: make(be.Space),
}
focus, recall := &attention{root: root}, &attention{root: root}
var lesson *eu.Circuit
for {
select {
case lesson = <-h.learn:
case walk := <-h.focus:
focus.Point(walk...)
if lesson == nil {
break
}
eye.Show("Use", focus.Remember(lesson))
case walk := <-h.recall:
recall.Point(walk...)
eye.Show("Use", recall.Recall())
}
}
}
示例5: Cognize
func (x *remember) Cognize(eye *plumb.Eye, dvalve string, dvalue interface{}) {
x.Lock()
defer x.Unlock()
switch dvalve {
case "From":
x.from = dvalue.(Image)
case "What":
x.what = dvalue.(Image)
case "When":
x.when = dvalue
case "_":
default:
panic("eh")
}
eye.Show(
"_",
Image{
"Memory": emphasize(x.from, x.what),
"When": x.when,
},
)
}
示例6: Cognize
func (x *focus) Cognize(eye *plumb.Eye, dvalve string, dvalue interface{}) {
x.Lock()
defer x.Unlock()
switch dvalve {
case "From":
x.from = dvalue.(Image)
case "On":
x.on = dvalue.(string)
case "When":
x.when = dvalue
case "_":
default:
panic("eh")
}
eye.Show(
"_",
Image{
"Focus": x.from.Copy().Cut(x.on),
"When": x.when,
},
)
}
示例7: Cognize
func (x *association) Cognize(eye *plumb.Eye, dvalve string, dvalue interface{}) {
x.Lock()
defer x.Unlock()
switch dvalve {
case "Name":
x.name = dvalue.(string)
case "With":
x.with = dvalue
case "When":
x.when = dvalue
case "_":
default:
panic("eh")
}
eye.Show(
"_",
Image{
x.name: x.with,
"When": x.when,
},
)
}
示例8: Cognize
func (x *sum) Cognize(eye *plumb.Eye, dvalve string, dvalue interface{}) {
x.save(dvalve, plumb.AsInt(dvalue))
var wg sync.WaitGroup
defer wg.Wait()
wg.Add(2)
switch dvalve {
case "X":
go func() { // Cognize
defer func() {
recover()
}()
defer wg.Done()
eye.Show("Y", x.u("Sum")-x.u("X"))
}()
go func() {
defer func() {
recover()
}()
defer wg.Done()
eye.Show("Sum", x.u("Y")+x.u("X"))
}()
case "Y":
go func() {
defer func() {
recover()
}()
defer wg.Done()
eye.Show("X", x.u("Sum")-x.u("Y"))
}()
go func() {
defer func() {
recover()
}()
defer wg.Done()
eye.Show("Sum", x.u("Y")+x.u("X"))
}()
case "Sum":
go func() {
defer func() {
recover()
}()
defer wg.Done()
eye.Show("X", x.u("Sum")-x.u("Y"))
}()
go func() {
defer func() {
recover()
}()
defer wg.Done()
eye.Show("Y", x.u("Sum")-x.u("X"))
}()
}
}
示例9: CognizeExploreOnStrobe
func CognizeExploreOnStrobe(eye *plumb.Eye, dvalve string, dvalue interface{}) {
if dvalve != "Strobe" {
return
}
strobe := dvalue.(Circuit)
charge := strobe.CircuitAt("Charge")
//
var start = view{
Index: 0,
Circuit: charge.CircuitAt("Circuit"),
Image: charge.StringAt("Image"),
Valve: charge.StringAt("Valve"),
}
var v = start
var memory list.List
for {
// Current view
eye.Show("Sequence", v.SequenceTerm(strobe.At("When"))) // yield current view
// transition
entering := v.Circuit.At(v.Image) // address of next image
switch t := entering.(type) {
case Address:
//
if memory.Len() > 100 {
log.Fatalf("memory overload")
// memory.Remove(memory.Front())
}
memory.PushFront(v) // remember
//
_, lookup := faculty.Root.LookupAddress(t.String())
v.Circuit = lookup.(Circuit) // transition to next circuit
toImg, toValve := v.Circuit.Follow(t.Name(), v.Valve)
v.Image, v.Valve = toImg.(string), toValve.(string)
case Super:
e := memory.Front() // backtrack
if e == nil {
log.Fatalf("insufficient memory")
}
u := e.Value.(view)
memory.Remove(e)
//
v.Circuit = u.Circuit
// log.Printf("Following %s:%s in %s", u.Image, v.Valve, v.Circuit)
toImg, toValve := v.Circuit.Follow(u.Image, v.Valve)
v.Image, v.Valve = toImg.(string), toValve.(string)
default:
panic("unknown image meaning")
}
v.Index++
//
if v.Same(start) {
x := v.SequenceTerm(strobe.At("When"))
x.Grow("Charge", "Loop")
eye.Show("Sequence", x)
break
}
}
}
示例10: Cognize
func (d dir) Cognize(eye *plumb.Eye, dvalve string, dvalue interface{}) {
if dvalve != "Path" {
return
}
eye.Show("_", string(d))
}