标签: predicate

从 QueryDSL 谓词对象中获取参数

我使用带有 Spring REST 端点的 QueryDSL 谓词对象来检索和查询参数值。

@GetMapping("/{subjectId}/students")
@RolesAllowed( {Roles.PLATFORM_ADMIN, Roles.USER})
public List<StudentResponse> getAllStudents(@PathVariable final String subjectId,                                
                                      @QuerydslPredicate(root = Student.class) final Predicate predicate) {     

        final Predicate searchPredicate = studentPredicate()
                .predicate(predicate)
                .subjectId(subjectId)
                .build();
        return studentService.findBySubjectId(subjectId, searchPredicate);

}
Run Code Online (Sandbox Code Playgroud)

Student类包含studentIdstudentName属性;

现在,如果有人调用https://hostname/ {subjectId}/students?studentId=1234&studentName=test

然后上面的代码生成带有参数值的谓词对象。但是我需要从谓词对象中获取以上 2 个参数值,以便除了数据库查询之外进行进一步处理。我没有看到谓词对象有任何支持方法来检索值。那么我该怎么做呢?

java rest spring predicate querydsl

5
推荐指数
1
解决办法
3659
查看次数

如何简化 Kotlin 中的谓词链

我有一系列谓词子句,像这样

student?.firstName?.equals("John") ?: false &&
student?.lastName?.equals("Smith") ?: false &&
student?.age?.equals(20) ?: false &&
student?.homeAddress?.equals("45 Boot Terrace") ?: false &&
student?.cellPhone?.startsWith("123456") ?: false
Run Code Online (Sandbox Code Playgroud)

我发现可以切换到布尔谓词and()而不是&&,但总的来说,它并没有使代码更简洁。

Kotlin 有没有办法简化这样的表达?

boolean predicate chain kotlin

5
推荐指数
1
解决办法
2480
查看次数

有条件地组合 Kotlin 中的 Lambda 以使用多个谓词进行过滤

假设我有以下谓词作为 Villager POJO 的预定义 lambda。

    val matchesSearch: (Villager, String) -> Boolean =
        { villager: Villager, query: String -> villager.name.contains(query) }

    val matchesGender: (Villager, Int) -> Boolean =
        { villager: Villager, filter: Int -> filter == villager.gender }

    val matchesPersonality: (Villager, Int) -> Boolean =
        { villager: Villager, filter: Int -> filter == villager.personality }

    val matchesSpecies: (Villager, Int) -> Boolean =
        { villager: Villager, filter: Int -> filter == villager.species }

    val matchesHobby: (Villager, Int) -> Boolean =
        { villager: …
Run Code Online (Sandbox Code Playgroud)

android predicate filter kotlin

5
推荐指数
1
解决办法
7162
查看次数

使用 Z3 SMT 解决谓词演算问题

我想使用 Z3 来解决最自然地用原子(符号)、集合、谓词和一阶逻辑表达的问题。例如(伪代码):

A = {a1, a2, a3, ...} # A is a set
B = {b1, b2, b3...}
C  = {c1, c2, c3...}

def p = (a:A, b:B, c:C) -> Bool # p is unspecified predicate
def q = (a:A, b:B, c:C) -> Bool

# Predicates can be defined in terms of other predicates:
def teaches = (a:A, b:B) -> there_exists c:C 
                            such_that [ p(a, b, c) OR q(a, b, c)  ]

constraint1 = forall b:B there_exists a:A
                         such_that …
Run Code Online (Sandbox Code Playgroud)

predicate first-order-logic alloy smt z3

5
推荐指数
1
解决办法
698
查看次数

我们可以构造一个满足给定位谓词的无限列表吗?

如果我们有一个给定的谓词p :: [Bool] -> Bool,它接受无限列表作为参数并返回TrueFalse基于某些未知条件,并且我们不知道这个谓词是什么。

我们能否设计一个函数f :: ([Bool] -> Bool) -> [Bool],采用这样的谓词并返回一个无限列表 l where p l == True,假设谓词是可满足的。

haskell predicate list bitstring

5
推荐指数
1
解决办法
135
查看次数

SwiftData 如何使用一对多模型形成搜索谓词

我正在 Xcode 15(测试版)中迁移到 SwiftData,并且很难弄清楚如何在我的一对多模型中形成谓词。期望的结果是返回一个查询,该查询仅返回文章“搜索”字段包含用户正在搜索的字符串的文章和部分。

这是我当前的模型:

@Model
class SectionsSD {    
  @Attribute(.unique) var id: String
  var section: String
  var rank: String  
  var toArticles: [ArticlesSD]?
    
  init(id:String, section: String, rank: String) {
      self.id = id
      self.section = section
      self.rank = rank
  }
}
@Model
class ArticlesSD {
  var id: String
  var title: String
  var summary: String
  var search: String
  var section: String
  var body: String
  @Relationship(inverse: \SectionsSD.toArticles) var toSection: SectionsSD?
 
  init(id: String, title: String, summary: String, search: String, section: String, body: String) {
    self.id …
Run Code Online (Sandbox Code Playgroud)

predicate swift-data

5
推荐指数
1
解决办法
1157
查看次数

如何解决创建 SwiftData #Predicate 的编译器错误?

我一直在尝试很多方法来解决这个问题。我正在尝试使用谓词获取 SwiftData 记录。但我尝试的一切都会导致两个错误:

初始化程序“init(_:)”要求“Item”符合“Encodable”

初始化程序“init(_:)”要求“Item”符合“Decodable”

该错误来自扩展#Predicate宏内部。

这是一个简单的类来演示这个问题:

@Model
final class Item {
    @Attribute(.unique) var id: String
    var timestamp: Date

    init(timestamp: Date) {
        self.id = UUID().uuidString
        self.timestamp = timestamp
    }
}
Run Code Online (Sandbox Code Playgroud)

这是导致编译器问题的基本代码:

extension Item {
    static func foo() {
        let item = Item(timestamp: .now)
        let pred = #Predicate<Item> { $0.id == item.id }
    }
}
Run Code Online (Sandbox Code Playgroud)

我尝试了很多方法来解决这个错误。我见过的 Apple SwiftData 示例项目都没有出现此错误。

我尝试过遵守Identifiable. 我已经重新命名了该id属性。我已将id类型更改为UUID直接而不是String.

当然,我添加了代码以符合Codable. 虽然这修复了编译器错误,但我最终遇到了运行时错误。请注意,Apple SwiftData 项目的模型均不符合Codable. …

predicate swift swift-data

5
推荐指数
1
解决办法
1029
查看次数

如何在谓词是方法的情况下执行NSArray filteredArrayUsingPredicate?

如何在谓词是方法的情况下执行NSArray filteredArrayUsingPredicate?这就是一个简单的代码示例在这里看起来像什么?

我一直试图通过谓词doco并且有点困惑.我可以看到它对于简单检查是如何工作的,但是如果我有一个需要几行objective-c代码的检查来实现代码有效的代码:

  • 使用filteredArrayUsingPredicate过滤NSArray
  • 谓词将是一种方法,它以某种方式获取输入变量,执行任何检查和平衡,然后返回TRUE/FALSE作为返回值re是否应该过滤项目

谢谢

iphone predicate objective-c nsarray nspredicate

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

Prolog中的复合布尔表达式

在Prolog中,如何实现复合逻辑谓词,如(A和B)或(C和D)?

这似乎是一个简单的问题,但许多平易近人的在线教程对布尔表达式不够详细.我假设你不能只写:

test(A, B, C, D) :- cond(A), cond(B); cond(C), cond(D).
Run Code Online (Sandbox Code Playgroud)

那你怎么做的?

logic boolean predicate prolog logical-operators

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

Common Lisp:制定有关输入值的规则

在编写一个谓词来测试一个数字是否可以被一定范围内的所有整数整除时,我想知道是否有可能通过"声明"符号制定关于输入的规则?

码:

(defun integer-divisiblep (n m i)   
  (declare (integer n m i))
  (do ((x m (- x 1)))           
      ((< x n) (return t))
    (when (not (integerp (/ i x)))
      (return nil))))
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我可能想指定输入值"n"必须小于"m".无论如何使用内置功能吗?我似乎无法使用Hyperspec上的声明标识符找到我想要的内容.

此外,我正在使用SBCL,如果这有所作为.

lisp predicate common-lisp

4
推荐指数
1
解决办法
206
查看次数