标签: predicate

使用 Stream API 将谓词链接为一个

我有一个谓词列表 ( List<Predicate<String>>),我想使用or方法将其链接到一个谓词中。我如何使用 Stream API 来实现这一目标?

java predicate stream

0
推荐指数
1
解决办法
70
查看次数

如何在 kotlin 中使用谓词进行过滤

我想要实现的是使用带有动态谓词的过滤函数。到目前为止我所做的是创建一个选择最佳谓词的函数:

fun buildDatePredicate(dateFrom: LocalDate?, dateTo: LocalDate?): Predicate<MyClass> {
    if (dateFrom != null && dateTo == null) {
        return Predicate { myItem -> myItem.date.isAfter(dateFrom) }
    }
    if (dateTo != null && dateFrom == null) {
        return Predicate { myItem -> myItem.date.isBefore(dateTo) }
    }
    if (dateTo != null && dateFrom != null) {
        return Predicate { myItem ->
            myItem.date.isBefore(dateTo) && myItem.date.isAfter(dateFrom)
        }
    }

    return Predicate { true }
}
Run Code Online (Sandbox Code Playgroud)

然后我尝试使用该谓词在我的列表上使用过滤器

myList.filter { buildDatePredicate(fromDate.toLocalDate(),toDate.toLocalDate()) }
Run Code Online (Sandbox Code Playgroud)

但它不起作用,因为

Type mismatch.
Required:
Boolean
Found:
Predicate<MyClass>
Run Code Online (Sandbox Code Playgroud)

有可能实现我想做的事情吗? …

predicate filter kotlin

0
推荐指数
1
解决办法
639
查看次数

将谓词作为参数传递给C#

我最近从一家公司进行了评估,该公司有一个案例,他们希望将谓词设置为方法的输入参数。对此我几乎没有经验,我一直在自己研究。代码如下:

using System;

public interface IBird
{
    Egg Lay();
}

public class Chicken : IBird
{
    public Chicken()
    {
    }

    public void EggLay()
    {
    }

    public Egg Lay()
    {
        return new Egg();
    }
}

public class Egg
{
    public Egg(Func<IBird> createBird)
    {
        throw new NotImplementedException("Waiting to be implemented.");
    }

    public IBird Hatch()
    {
        throw new NotImplementedException("Waiting to be implemented.");
    }
}

public class Program
{
    public static void Main(string[] args)
    {
//      var chicken1 = new Chicken();
//      var egg …
Run Code Online (Sandbox Code Playgroud)

c# predicate func

-1
推荐指数
1
解决办法
683
查看次数

Haskell - 使用 foldr 为函数 `all` 创建函数定义

我正在尝试all使用foldr. p是谓词。我知道这是可以做到的:

all p = and . foldr (\x xs -> p x : xs) []
Run Code Online (Sandbox Code Playgroud)

但我想做的是将函数and转换为foldr方程。这能做到吗?

我尝试了以下方法,但都失败了:

all p = foldr (\x p -> \ys -> and (p x) ys) True
all p = foldr (\x and -> (\ys -> (p x and ys))) True
all p = foldr (\x ys -> and . (p x) ys) True
Run Code Online (Sandbox Code Playgroud)

我对如何申请的理解不足foldr吗?

haskell predicate fold

-2
推荐指数
1
解决办法
108
查看次数

标签 统计

predicate ×4

c# ×1

filter ×1

fold ×1

func ×1

haskell ×1

java ×1

kotlin ×1

stream ×1