Sha256: b631afd66ca03293c12e70e14fbe6f65119233c9211ff6636108c7338d579188

Contents?: true

Size: 1.5 KB

Versions: 99

Compression:

Stored size: 1.5 KB

Contents

package react

// A Reactor manages linked cells.
type Reactor interface {
	// CreateInput creates an input cell linked into the reactor
	// with the given initial value.
	CreateInput(int) InputCell

	// CreateCompute1 creates a compute cell which computes its value
	// based on one other cell. The compute function will only be called
	// if the value of the passed cell changes.
	CreateCompute1(Cell, func(int) int) ComputeCell

	// CreateCompute2 is like CreateCompute1, but depending on two cells.
	// The compute function will only be called if the value of any of the
	// passed cells changes.
	CreateCompute2(Cell, Cell, func(int, int) int) ComputeCell
}

// A Cell is conceptually a holder of a value.
type Cell interface {
	// Value returns the current value of the cell.
	Value() int
}

// An InputCell has a changeable value, changing the value triggers updates to
// other cells.
type InputCell interface {
	Cell

	// SetValue sets the value of the cell.
	SetValue(int)
}

// A ComputeCell always computes its value based on other cells and can
// call callbacks upon changes.
type ComputeCell interface {
	Cell

	// AddCallback adds a callback which will be called when the value changes.
	// It returns a callback handle which can be used to remove the callback.
	AddCallback(func(int)) CallbackHandle

	// RemoveCallback removes a previously added callback, if it exists.
	RemoveCallback(CallbackHandle)
}

// A CallbackHandle is used to remove previously added callbacks, see ComputeCell.
type CallbackHandle interface{}

Version data entries

99 entries across 99 versions & 1 rubygems

Version Path
trackler-2.0.6.43 tracks/go/exercises/react/interfaces.go
trackler-2.0.6.42 tracks/go/exercises/react/interfaces.go
trackler-2.0.6.41 tracks/go/exercises/react/interfaces.go
trackler-2.0.6.40 tracks/go/exercises/react/interfaces.go
trackler-2.0.6.39 tracks/go/exercises/react/interfaces.go
trackler-2.0.6.38 tracks/go/exercises/react/interfaces.go
trackler-2.0.6.37 tracks/go/exercises/react/interfaces.go
trackler-2.0.6.36 tracks/go/exercises/react/interfaces.go
trackler-2.0.6.35 tracks/go/exercises/react/interfaces.go
trackler-2.0.6.34 tracks/go/exercises/react/interfaces.go
trackler-2.0.6.33 tracks/go/exercises/react/interfaces.go
trackler-2.0.6.32 tracks/go/exercises/react/interfaces.go
trackler-2.0.6.31 tracks/go/exercises/react/interfaces.go
trackler-2.0.6.30 tracks/go/exercises/react/interfaces.go
trackler-2.0.6.29 tracks/go/exercises/react/interfaces.go
trackler-2.0.6.28 tracks/go/exercises/react/interfaces.go
trackler-2.0.6.27 tracks/go/exercises/react/interfaces.go
trackler-2.0.6.26 tracks/go/exercises/react/interfaces.go
trackler-2.0.6.25 tracks/go/exercises/react/interfaces.go
trackler-2.0.6.24 tracks/go/exercises/react/interfaces.go