-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtern.go
More file actions
120 lines (107 loc) · 3.49 KB
/
tern.go
File metadata and controls
120 lines (107 loc) · 3.49 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
// Package tern: Flexible tern operation engine to support Go with condition-based evaluation
// Provides comprehensive tern operations with bool/function conditions and value/function arguments
// Features both tern operations (condition ? a : b) and two-value operations (condition ? a : zero)
// Supports deferred evaluation through function parameters to avoid unneeded computation
//
// tern: Go 的灵活三元运算引擎,支持条件评估
// 提供全面的三元运算,支持布尔/函数条件和值/函数参数
// 包含三元运算(条件 ? a : b)和二元运算(条件 ? a : 零值)
// 通过函数参数支持惰性求值,避免不必要的计算
package tern
import "github.com/yylego/tern/internal/utils"
// BVV returns a if condition is true, otherwise returns b
// BVV 如果 condition 为 true 则返回 a,否则返回 b
func BVV[T any](condition bool, a, b T) T {
if condition {
return a
}
return b
}
// BVF returns a if condition is true, otherwise calls and returns b()
// BVF 如果 condition 为 true 则返回 a,否则调用并返回 b()
func BVF[T any](condition bool, a T, b func() T) T {
if condition {
return a
}
return b()
}
// BFV returns a() if condition is true, otherwise returns b
// BFV 如果 condition 为 true 则返回 a(),否则返回 b
func BFV[T any](condition bool, a func() T, b T) T {
if condition {
return a()
}
return b
}
// BFF returns a() if condition is true, otherwise returns b()
// BFF 如果 condition 为 true 则返回 a(),否则返回 b()
func BFF[T any](condition bool, a func() T, b func() T) T {
if condition {
return a()
}
return b()
}
// FVV returns a if condition() is true, otherwise returns b
// FVV 如果 condition() 为 true 则返回 a,否则返回 b
func FVV[T any](condition func() bool, a, b T) T {
if condition() {
return a
}
return b
}
// FVF returns a if condition() is true, otherwise calls and returns b()
// FVF 如果 condition() 为 true 则返回 a,否则调用并返回 b()
func FVF[T any](condition func() bool, a T, b func() T) T {
if condition() {
return a
}
return b()
}
// FFV returns a() if condition() is true, otherwise returns b
// FFV 如果 condition() 为 true 则返回 a(),否则返回 b
func FFV[T any](condition func() bool, a func() T, b T) T {
if condition() {
return a()
}
return b
}
// FFF returns a() if condition() is true, otherwise returns b()
// FFF 如果 condition() 为 true 则返回 a(),否则返回 b()
func FFF[T any](condition func() bool, a func() T, b func() T) T {
if condition() {
return a()
}
return b()
}
// BV returns a if condition is true, otherwise returns zero value
// BV 如果 condition 为 true 则返回 a,否则返回零值
func BV[T any](condition bool, a T) T {
if condition {
return a
}
return utils.Zero[T]()
}
// BF returns a() if condition is true, otherwise returns zero value
// BF 如果 condition 为 true 则返回 a(),否则返回零值
func BF[T any](condition bool, a func() T) T {
if condition {
return a()
}
return utils.Zero[T]()
}
// FV returns a if condition() is true, otherwise returns zero value
// FV 如果 condition() 为 true 则返回 a,否则返回零值
func FV[T any](condition func() bool, a T) T {
if condition() {
return a
}
return utils.Zero[T]()
}
// FF returns a() if condition() is true, otherwise returns zero value
// FF 如果 condition() 为 true 则返回 a(),否则返回零值
func FF[T any](condition func() bool, a func() T) T {
if condition() {
return a()
}
return utils.Zero[T]()
}