语言不可知论-对具有状态的谓词的适当术语



通常假定谓词(用于测试其输入的条件的布尔值函数对象)是无状态的。

对于一个带有state的测试函数的对象,什么是最合适的名字?

。在Java中,下面的CountTrigger类只在第n次测试与期望值匹配的值时返回true,否则返回false。

 interface QuasiPredicate<T>  // what should this be renamed to?
 {
      public boolean test(T value);
 }
 class CountTrigger<T> implements QuasiPredicate<T>
 {
      // for simplicity, ignore synchronization + null-value issues
      private int remainingTriggers = 0;
      final private T testValue;
      public CountTrigger(T testValue, int count)
      {
          this.remainingTriggers = count;
          this.testValue = testValue;
      }
      @Override public boolean test(T value)
      {
          if (!this.testValue.equals(value))
              return false;
          if (this.remainingTriggers == 0)
              return false;
          if (--this.remainingTriggers == 0)
              return true;                  
      }
 }

考虑到它是一个接口,接口是implemented而不是extended,那么我不认为你的对象实现谓词的问题。

如果你打算把public CountTrigger(T testValue, int count)放在接口中,那么你可能需要一个不同的名称。可能是IFiniteRule或其他合适的同义词。可以在https://english.stackexchange.com/;-)