Sha256: 2cbba49ebb5f88ac1318f4ef276583a32bfcd48caf84ccdc9c475ef22ad74464

Contents?: true

Size: 1.42 KB

Versions: 297

Compression:

Stored size: 1.42 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 Canceler which can be used to remove the callback.
	AddCallback(func(int)) Canceler
}

// A Canceler is used to remove previously added callbacks, see ComputeCell.
type Canceler interface {
	// Cancel removes the callback.
	Cancel()
}

Version data entries

297 entries across 297 versions & 1 rubygems

Version Path
trackler-2.2.1.139 tracks/go/exercises/react/interfaces.go
trackler-2.2.1.138 tracks/go/exercises/react/interfaces.go
trackler-2.2.1.137 tracks/go/exercises/react/interfaces.go
trackler-2.2.1.136 tracks/go/exercises/react/interfaces.go
trackler-2.2.1.135 tracks/go/exercises/react/interfaces.go
trackler-2.2.1.134 tracks/go/exercises/react/interfaces.go
trackler-2.2.1.133 tracks/go/exercises/react/interfaces.go
trackler-2.2.1.132 tracks/go/exercises/react/interfaces.go
trackler-2.2.1.131 tracks/go/exercises/react/interfaces.go
trackler-2.2.1.130 tracks/go/exercises/react/interfaces.go
trackler-2.2.1.129 tracks/go/exercises/react/interfaces.go
trackler-2.2.1.128 tracks/go/exercises/react/interfaces.go
trackler-2.2.1.127 tracks/go/exercises/react/interfaces.go
trackler-2.2.1.126 tracks/go/exercises/react/interfaces.go
trackler-2.2.1.125 tracks/go/exercises/react/interfaces.go
trackler-2.2.1.124 tracks/go/exercises/react/interfaces.go
trackler-2.2.1.123 tracks/go/exercises/react/interfaces.go
trackler-2.2.1.122 tracks/go/exercises/react/interfaces.go
trackler-2.2.1.121 tracks/go/exercises/react/interfaces.go
trackler-2.2.1.120 tracks/go/exercises/react/interfaces.go