Skip to content

Commit

Permalink
feat: add Ternary
Browse files Browse the repository at this point in the history
  • Loading branch information
duke-git committed Nov 8, 2024
1 parent 08f14d2 commit de877e5
Show file tree
Hide file tree
Showing 5 changed files with 90 additions and 10 deletions.
9 changes: 8 additions & 1 deletion condition/condition.go
Original file line number Diff line number Diff line change
Expand Up @@ -72,10 +72,17 @@ func Nand[T, U any](a T, b U) bool {

// TernaryOperator checks the value of param `isTrue`, if true return ifValue else return elseValue.
// Play: https://go.dev/play/p/ElllPZY0guT
func TernaryOperator[T, U any](isTrue T, ifValue U, elseValue U) U {
func Ternary[T, U any](isTrue T, ifValue U, elseValue U) U {
if Bool(isTrue) {
return ifValue
} else {
return elseValue
}
}

// TernaryOperator checks the value of param `isTrue`, if true return ifValue else return elseValue.
// Play: https://go.dev/play/p/ElllPZY0guT
// Deprecated: Use Ternary instead.
func TernaryOperator[T, U any](isTrue T, ifValue U, elseValue U) U {
return Ternary(isTrue, ifValue, elseValue)
}
6 changes: 3 additions & 3 deletions condition/condition_example_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -148,13 +148,13 @@ func ExampleNand() {
// false
}

func ExampleTernaryOperator() {
func ExampleTernary() {
conditionTrue := 2 > 1
result1 := TernaryOperator(conditionTrue, 0, 1)
result1 := Ternary(conditionTrue, 0, 1)
fmt.Println(result1)

conditionFalse := 2 > 3
result2 := TernaryOperator(conditionFalse, 0, 1)
result2 := Ternary(conditionFalse, 0, 1)
fmt.Println(result2)

// Output:
Expand Down
6 changes: 3 additions & 3 deletions condition/condition_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -124,13 +124,13 @@ func TestNand(t *testing.T) {
assert.Equal(false, Nand(1, 1))
}

func TestTernaryOperator(t *testing.T) {
func TestTernary(t *testing.T) {
t.Parallel()

assert := internal.NewAssert(t, "TernaryOperator")
assert := internal.NewAssert(t, "TestTernary")

trueValue := "1"
falseValue := "0"

assert.Equal(trueValue, TernaryOperator(true, trueValue, falseValue))
assert.Equal(trueValue, Ternary(true, trueValue, falseValue))
}
39 changes: 38 additions & 1 deletion docs/api/packages/condition.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,8 @@ import (
- [Nor](#Nor)
- [Xnor](#Xnor)
- [Nand](#Nand)
- [TernaryOperator](#TernaryOperator)
- [Ternary](#Ternary)
- [TernaryOperator<sup>deprecated</sup>](#TernaryOperator)

<div STYLE="page-break-after: always;"></div>

Expand Down Expand Up @@ -257,9 +258,45 @@ func main() {
}
```

### <span id="Ternary">Ternary</span>
<p>三元运算符。</p>

<b>函数签名:</b>

```go
func Ternary[T, U any](isTrue T, ifValue U, elseValue U) U
```
<b>示例:<span style="float:right;display:inline-block;">[运行](https://go.dev/play/p/ElllPZY0guT)</span></b>

```go
package main

import (
"fmt"
"github.com/duke-git/lancet/v2/condition"
)

func main() {
conditionTrue := 2 > 1
result1 := condition.Ternary(conditionTrue, 0, 1)

conditionFalse := 2 > 3
result2 := condition.Ternary(conditionFalse, 0, 1)

fmt.Println(result1)
fmt.Println(result2)

// Output:
// 0
// 1
}
```

### <span id="TernaryOperator">TernaryOperator</span>
<p>三元运算符</p>

> ⚠️ 本函数已弃用,使用`Ternary`代替。
<b>函数签名:</b>

```go
Expand Down
40 changes: 38 additions & 2 deletions docs/en/api/packages/condition.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,8 @@ import (
- [Nor](#Nor)
- [Xnor](#Xnor)
- [Nand](#Nand)
- [TernaryOperator](#TernaryOperator)
- [Ternary](#Ternary)
- [TernaryOperator<sup>deprecated</sup>](#TernaryOperator)

<div STYLE="page-break-after: always;"></div>

Expand Down Expand Up @@ -269,9 +270,45 @@ func main() {



### <span id="Ternary">Ternary</span>
<p>Checks the value of param `isTrue`, if true return ifValue else return elseValue</p>

<b>Signature:</b>

```go
func Ternary[T, U any](isTrue T, ifValue U, elseValue U) U
```
<b>Example:<span style="float:right;display:inline-block;">[运行](https://go.dev/play/p/ElllPZY0guT)</span></b>

```go
package main

import (
"fmt"
"github.com/duke-git/lancet/v2/condition"
)

func main() {
conditionTrue := 2 > 1
result1 := condition.Ternary(conditionTrue, 0, 1)

conditionFalse := 2 > 3
result2 := condition.Ternary(conditionFalse, 0, 1)

fmt.Println(result1)
fmt.Println(result2)

// Output:
// 0
// 1
}
```

### <span id="TernaryOperator">TernaryOperator</span>
<p>Checks the value of param `isTrue`, if true return ifValue else return elseValue</p>

> ⚠️ This function is deprecated. use `Ternary` instead.
<b>Signature:</b>

```go
Expand Down Expand Up @@ -307,4 +344,3 @@ func main() {




0 comments on commit de877e5

Please sign in to comment.