mirror of
https://github.com/duke-git/lancet.git
synced 2026-03-01 00:35:28 +08:00
doc: add doc for Xnor and Nand in function package
This commit is contained in:
@@ -37,6 +37,8 @@ import (
|
|||||||
- [Or](#Or)
|
- [Or](#Or)
|
||||||
- [Negate](#Negate)
|
- [Negate](#Negate)
|
||||||
- [Nor](#Nor)
|
- [Nor](#Nor)
|
||||||
|
- [Xnor](#Xnor)
|
||||||
|
- [Nand](#Nand)
|
||||||
|
|
||||||
<div STYLE="page-break-after: always;"></div>
|
<div STYLE="page-break-after: always;"></div>
|
||||||
|
|
||||||
@@ -563,3 +565,77 @@ func main() {
|
|||||||
// false
|
// false
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### <span id="Nand">Nand</span>
|
||||||
|
|
||||||
|
<p>返回一个复合谓词函数,表示给定谓词函数列表的逻辑非与 (NAND)。仅当列表中所有函数对给定参数返回false时,才返回true,否则返回false。</p>
|
||||||
|
|
||||||
|
<b>函数签名:</b>
|
||||||
|
|
||||||
|
```go
|
||||||
|
func Nand[T any](predicates ...func(T) bool) func(T) bool
|
||||||
|
```
|
||||||
|
|
||||||
|
<b>示例:</b>
|
||||||
|
|
||||||
|
```go
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"github.com/duke-git/lancet/v2/function"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
isNumericAndLength5 := function.Nand(
|
||||||
|
func(s string) bool { return strings.ContainsAny(s, "0123456789") },
|
||||||
|
func(s string) bool { return len(s) == 5 },
|
||||||
|
)
|
||||||
|
|
||||||
|
fmt.Println(isNumericAndLength5("12345"))
|
||||||
|
fmt.Println(isNumericAndLength5("1234"))
|
||||||
|
fmt.Println(isNumericAndLength5("abcdef"))
|
||||||
|
|
||||||
|
// Output:
|
||||||
|
// false
|
||||||
|
// false
|
||||||
|
// true
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### <span id="Xnor">Xnor</span>
|
||||||
|
|
||||||
|
<p>返回一个复合谓词函数,表示给定一组谓词函数的逻辑异或 (XNOR)。只有当所有 谓词函数对给参数都返回true或false时,该谓词函数才返回true。</p>
|
||||||
|
|
||||||
|
<b>函数签名:</b>
|
||||||
|
|
||||||
|
```go
|
||||||
|
func Xnor[T any](predicates ...func(T) bool) func(T) bool
|
||||||
|
```
|
||||||
|
|
||||||
|
<b>示例:</b>
|
||||||
|
|
||||||
|
```go
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"github.com/duke-git/lancet/v2/function"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
isEven := func(i int) bool { return i%2 == 0 }
|
||||||
|
isPositive := func(i int) bool { return i > 0 }
|
||||||
|
|
||||||
|
match := function.Xnor(isEven, isPositive)
|
||||||
|
|
||||||
|
fmt.Println(match(2))
|
||||||
|
fmt.Println(match(-3))
|
||||||
|
fmt.Println(match(3))
|
||||||
|
|
||||||
|
// Output:
|
||||||
|
// true
|
||||||
|
// true
|
||||||
|
// false
|
||||||
|
}
|
||||||
|
```
|
||||||
@@ -37,6 +37,8 @@ import (
|
|||||||
- [Or](#Or)
|
- [Or](#Or)
|
||||||
- [Negate](#Negate)
|
- [Negate](#Negate)
|
||||||
- [Nor](#Nor)
|
- [Nor](#Nor)
|
||||||
|
- [Xnor](#Xnor)
|
||||||
|
- [Nand](#Nand)
|
||||||
|
|
||||||
<div STYLE="page-break-after: always;"></div>
|
<div STYLE="page-break-after: always;"></div>
|
||||||
|
|
||||||
@@ -562,4 +564,78 @@ func main() {
|
|||||||
// true
|
// true
|
||||||
// false
|
// false
|
||||||
}
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### <span id="Nand">Nand</span>
|
||||||
|
|
||||||
|
<p>Returns a composed predicate that represents the logical NAND of a list of predicates. It evaluates to true only if all predicates evaluate to false for the given value.</p>
|
||||||
|
|
||||||
|
<b>Signature:</b>
|
||||||
|
|
||||||
|
```go
|
||||||
|
func Nand[T any](predicates ...func(T) bool) func(T) bool
|
||||||
|
```
|
||||||
|
|
||||||
|
<b>Example:</b>
|
||||||
|
|
||||||
|
```go
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"github.com/duke-git/lancet/v2/function"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
isNumericAndLength5 := function.Nand(
|
||||||
|
func(s string) bool { return strings.ContainsAny(s, "0123456789") },
|
||||||
|
func(s string) bool { return len(s) == 5 },
|
||||||
|
)
|
||||||
|
|
||||||
|
fmt.Println(isNumericAndLength5("12345"))
|
||||||
|
fmt.Println(isNumericAndLength5("1234"))
|
||||||
|
fmt.Println(isNumericAndLength5("abcdef"))
|
||||||
|
|
||||||
|
// Output:
|
||||||
|
// false
|
||||||
|
// false
|
||||||
|
// true
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### <span id="Xnor">Xnor</span>
|
||||||
|
|
||||||
|
<p>Returns a composed predicate that represents the logical XNOR of a list of predicates. It evaluates to true only if all predicates evaluate to true or false for the given value.</p>
|
||||||
|
|
||||||
|
<b>Signature:</b>
|
||||||
|
|
||||||
|
```go
|
||||||
|
func Xnor[T any](predicates ...func(T) bool) func(T) bool
|
||||||
|
```
|
||||||
|
|
||||||
|
<b>Example:</b>
|
||||||
|
|
||||||
|
```go
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"github.com/duke-git/lancet/v2/function"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
isEven := func(i int) bool { return i%2 == 0 }
|
||||||
|
isPositive := func(i int) bool { return i > 0 }
|
||||||
|
|
||||||
|
match := function.Xnor(isEven, isPositive)
|
||||||
|
|
||||||
|
fmt.Println(match(2))
|
||||||
|
fmt.Println(match(-3))
|
||||||
|
fmt.Println(match(3))
|
||||||
|
|
||||||
|
// Output:
|
||||||
|
// true
|
||||||
|
// true
|
||||||
|
// false
|
||||||
|
}
|
||||||
```
|
```
|
||||||
@@ -16,7 +16,7 @@ func And[T any](predicates ...func(T) bool) func(T) bool {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// And returns a composed predicate that represents the logical NAND of a list of predicates.
|
// Nand returns a composed predicate that represents the logical NAND of a list of predicates.
|
||||||
// It evaluates to true only if all predicates evaluate to false for the given value.
|
// It evaluates to true only if all predicates evaluate to false for the given value.
|
||||||
func Nand[T any](predicates ...func(T) bool) func(T) bool {
|
func Nand[T any](predicates ...func(T) bool) func(T) bool {
|
||||||
if len(predicates) < 2 {
|
if len(predicates) < 2 {
|
||||||
|
|||||||
Reference in New Issue
Block a user