标签: predicate

为什么没有成员变量的C++类占用空间?

我发现MSVC和GCC编译器每个类实例至少分配一个字节,即使该类是没有成员变量的谓词(或只有静态成员变量).以下代码说明了这一点.

#include <iostream>

class A
{
public:
   bool operator()(int x) const
   {
      return x>0;
   }
};

class B
{
public:
   static int v;
   static bool check(int x)
   {
      return x>0;
   }
};

int B::v = 0;

void test()
{
   A a;
   B b;
   std::cout << "sizeof(A)=" << sizeof(A) << "\n"
             << "sizeof(a)=" << sizeof(a) << "\n"
             << "sizeof(B)=" << sizeof(B) << "\n"
             << "sizeof(b)=" << sizeof(b) << "\n";
}

int main()
{
   test();
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出:

sizeof(A)=1
sizeof(a)=1
sizeof(B)=1 …
Run Code Online (Sandbox Code Playgroud)

c++ class predicate sizeof

52
推荐指数
3
解决办法
6869
查看次数

如何等到Selenium中存在元素?

我正在尝试让Selenium等待页面加载后动态添加到DOM的元素.试过这个:

fluentWait.until(ExpectedConditions.presenceOfElement(By.id("elementId"));
Run Code Online (Sandbox Code Playgroud)

如果它有帮助,这里是fluentWait:

FluentWait fluentWait = new FluentWait<>(webDriver) {
    .withTimeout(30, TimeUnit.SECONDS)
    .pollingEvery(200, TimeUnit.MILLISECONDS);
}
Run Code Online (Sandbox Code Playgroud)

但它会抛出NoSuchElementException- 看起来像presenceOfElement期望元素存在,所以这是有缺陷的.这对于Selenium来说一定是面包和黄油,并且不想重新发明轮子......任何人都可以建议一个替代品,理想情况下不要自己动手Predicate吗?

java selenium predicate wait selenium-webdriver

51
推荐指数
2
解决办法
17万
查看次数

如何将多个谓词应用于java.util.Stream?

如何将多个谓词应用于java.util.Stream's filter()方法?

这就是我现在所做的,但我并不喜欢它.我有一些Collection东西,我需要根据Collection过滤器(谓词)减少事物的数量:

Collection<Thing> things = someGenerator.someMethod();
List<Thing> filtered = things.parallelStream().filter(p -> {
   for (Filter f : filtersCollection) {
      if (f.test(p))
        return true;
   }
   return false;
}).collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

我知道如果我事先了解过滤器的数量,我可以这样做:

List<Thing> filtered = things.parallelStream().filter(filter1).or(filter2).or(filter3)).collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

但是如何在不混合编程风格的情况下应用未知数量的谓词?知道它看起来有点难看......

java lambda predicate java-8 java-stream

50
推荐指数
4
解决办法
5万
查看次数

如何将Expression <Func <T,bool >>转换为Predicate <T>

我有一个接受Expression<Func<T, bool>>一个参数的方法.我想在List.Find()方法中将它用作谓词,但我似乎无法将其转换为List所采用的谓词.你知道一个简单的方法吗?

public IList<T> Find<T>(Expression<Func<T, bool>> expression) where T : class, new()
{
    var list = GetList<T>();

    var predicate = [what goes here to convert expression?];

    return list.Find(predicate);
}
Run Code Online (Sandbox Code Playgroud)

更新

结合tvanfosson和280Z28的答案,我现在使用这个:

public IList<T> Find<T>(Expression<Func<T, bool>> expression) where T : class, new()
{
    var list = GetList<T>();

    return list.Where(expression.Compile()).ToList();
}
Run Code Online (Sandbox Code Playgroud)

c# expression predicate

48
推荐指数
3
解决办法
3万
查看次数

具有多个谓词的Xpath表达式

我正在尝试构建一个复杂的xpath表达式,它将回答以下条件.

从下面的XML数据中,返回User实体,其中:

  1. 他的登录名是" user1 "
  2. 他的名字是" 用户1 "
  3. 他有2个不同的配置文件值,分别是" operator "和" admin "(我不知道前面的确切顺序)

    <user>
      <login>user1</login>
      <name>User 1</name>
      <profile>
        <value>admin</value>
        <id>2</id>
        <description>admin users</description>
      </profile>
      <profile>
        <value>operator</value>  
        <id>1</id>
        <description>Operator</description>
      </profile>
    </user>
    
    <user>
      <login>user2</login>
      <name>User 2</name>
      <profile>
        <value>admin</value>
        <id>4</id>
        <description>admins users</description>
      </profile>
      <profile>
        <value>poweruser</value>  
        <id>5</id>
        <description>power users</description>
      </profile>
    </user>
    
    </root>
    
    Run Code Online (Sandbox Code Playgroud)

有人可以为这种情况提供一个例子吗?

编辑:添加了复杂的配置文件实体

xml xpath predicate

45
推荐指数
2
解决办法
7万
查看次数

List <object> .RemoveAll - 如何创建适当的谓词

这是一个noob问题 - 我仍然是C#和泛型的新手,对谓词,委托和lambda表达式来说是全新的......

我有一个"查询"课程,其中包含另一个名为"车辆"的课程的通用列表.我正在构建代码以从父查询添加/编辑/删除车辆.而目前,我特别关注删除.

从我到目前为止所看到的,似乎我可以使用Vehicles.RemoveAll()来删除具有特定VehicleID的项目或具有特定EnquiryID的所有项目.我的问题是理解如何提供.删除所有正确的谓词 - 我看到的例子过于简单化(或者由于我对谓词,委托和lambda表达式缺乏了解,我可能过于简单化).

因此,如果我有一辆List<Of Vehicle> Vehicles车在哪里有一个EnquiryID,我将如何使用Vehicles.RemoveAll()移除给定EnquiryID的所有车辆?

我知道有几种方法,所以我很想听到方法之间的差异 - 尽管我需要一些工作,这也是一个学习练习.

作为补充问题,通用列表是这些对象的最佳存储库吗?我的第一个倾向是收藏品,但看起来我已经过时了.当然,仿制药似乎更受欢迎,但我对其他替代品感到好奇.

c# generics lambda delegates predicate

42
推荐指数
3
解决办法
9万
查看次数

检查集合中的所有项目是否与Scala中的谓词匹配

测试集合中所有项目是否与谓词匹配的最惯用方法是什么?

任何项目?

scala predicate

41
推荐指数
1
解决办法
1万
查看次数

核心数据:查询谓词中的objectID?

我使用获取请求和谓词从Core Data持久性存储中获取一组对象.我当前的谓词只是检查属性是否> =某个值.这一切都很好,除了我想最终排除当前在数组中保存的任何对象.

我基本上需要能够排除一组对象,我认为我能做到这一点的唯一方法是能够objectID从我的托管对象数组中获取一个列表,并在我的谓词中创建另一个表达式以确保任何对象返回不一样objectID.IE @"ANY records.objectID NOT IN %@", arrayOfObjectID.

我怎样才能做到这一点?

predicate core-data fetch

38
推荐指数
3
解决办法
2万
查看次数

为什么Java 8的Predicate <T>不扩展Function <T,Boolean>

如果我编写Predicate接口,我想在接口中编码它只是一个返回原始布尔值的函数,如下所示:

@FunctionalInterface
public interface Predicate<T> extends Function<T, Boolean> {

    boolean test(T t);

    @Override
    default Boolean apply(T t) {
        return Boolean.valueOf(test(t));
    }
}
Run Code Online (Sandbox Code Playgroud)

我想知道,有没有令人信服的理由让Java 8 API设计者选择将Predicate与Function完全分开?是否有一些证据表明他们认为这样做并决定反对呢?我想类似的问题适用于所有其他'特殊'功能接口,如Consumer(可能是Function <T,Void>),Supplier(Function <Void,T>)和原始函数,如IntFunction(Function <Integer,T>).

我没有深入和彻底地考虑过这个问题的所有后果,所以我可能会遗漏一些东西.

编辑:一些答案强调了应用和测试之间的语义区别.我不是说我不欣赏这种区别,我同意这种区别是有益的.我不明白的是,为什么Predicate不是一个函数,就像List是一个Collection或Double是一个Number,它是一个Object.

如果Predicate(以及所有其他特殊的通用功能接口,例如Consumer,Supplier,IntUnaryOperator等)与Function有这种关系,它将允许人们在预期使用Function参数的地方使用它(想到的是组合与其他功能,例如,呼叫myFunction.compose(比如说myPredicate)或避免在API中写入几个专门的功能时,如上所述的这种汽车(未)拳击实施将是足够的)

编辑2:看看openjdk lambda项目,我发现原始的功能接口用于扩展功能,直到2012-12-19的Brian Goetz提交.我找不到具体的原因,在那个时候对任何lambda-dev或JSR专家组邮件列表进行了更改.

java lambda functional-programming predicate java-8

38
推荐指数
4
解决办法
4830
查看次数

lisp过滤掉列表中不匹配谓词的结果

我正在尝试学习lisp,使用emacs方言,我有一个问题.让我们说list有一些成员,谓词的评估结果为false.如何在没有这些成员的情况下创建新列表?类似的东西{ A in L: p(A) is true }.在python中有过滤函数,在lisp中是否有相同的东西?如果没有,我该怎么办?

谢谢

lisp elisp predicate list filter

35
推荐指数
4
解决办法
2万
查看次数