我正在阅读有关更新的 SQueryL文档,我看到:
update(songs)(s =>
where(s.title === "Watermelon Man")
set(s.title := "The Watermelon Man",
s.year := s.year.~ + 1)
)
我很难从 SQueryL 源代码中找到 ~ 方法,而链接的文档显然也没有告诉我它的作用。有人愿意解释吗?
我记得不久前在Schema Definition Page上阅读了有关波浪号运算符的内容。它是关于消除原始类型和自定义类型之间的歧义,尽管(因为我刚刚开始学习 Scala)它对我来说仍然听起来有点模糊;)。引用一小段
...
重要:在 PrimitiveTypes 模式下,数字运算符之间可能存在歧义
使用 org.squeryl.PrimitiveTypeMode 时,编译器会将类似于下一个示例中的表达式视为布尔值。.~ 函数需要告诉编译器左侧是 TypedExpressionNode[Int] 的一个节点,这将导致整个表达式成为一个 LogicalBoolean,这就是 where 子句所采用的:
...
希望有帮助。