package ternary func If[T any](condition bool, a Supplier[T], b Supplier[T]) T { if condition { return a.Get() } return b.Get() } func Func[T any](supplier func() T) Supplier[T] { return FuncSupplier[T](supplier) } func Value[T any](value T) Supplier[T] { return ValueSupplier[T]{value: value} } type Supplier[T any] interface { Get() T } type FuncSupplier[T any] func() T func (s FuncSupplier[T]) Get() T { return s() } type ValueSupplier[T any] struct { value T } func (s ValueSupplier[T]) Get() T { return s.value }