| 1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- // package quark_val -- кварк значения.
- package quark_val
- // Fix -- фиксированное значение.
- type Fix struct{}
- // Mut -- изменяемое значение.
- type Mut struct{}
- // CMod -- ограничитель модификации.
- type CMod interface {
- Fix | Mut
- }
- // Field -- кварк поля.
- type Field[M CMod, T any] struct {
- val T // Значение поля
- }
- // NewField -- возвращает новое фиксированное значение.
- func NewField[T any](val T) *Field[Fix, T] {
- sf := &Field[Fix, T]{
- val: val,
- }
- return sf
- }
- // NewFieldMut -- возвращает новое мутабельное значение.
- func NewFieldMut[T any](val T) *Field[Mut, T] {
- sf := &Field[Mut, T]{
- val: val,
- }
- return sf
- }
- // Получить значение поля.
- func (sf *Field[M, T]) Get() T {
- return sf.val
- }
- // Set -- установить мутабельное значение.
- func Set[T any](sf *Field[Mut, T], val T) {
- sf.val = val
- }
|