2010-12-18 54 views
3

我讀SQueryL documentation上更新,我看到:SQueryL波形符號運算符的作用是什麼?

update(songs)(s => 
    where(s.title === "Watermelon Man") 
    set(s.title := "The Watermelon Man", 
     s.year := s.year.~ + 1) 
) 

我有一個很難找到從SQueryL源代碼〜方法,以及相關的文件顯然不告訴我它無論是。有人關心解釋嗎?

+0

該文檔似乎不完整...也許嘗試他們的郵件列表? – 2010-12-18 07:30:36

+0

我問過討論組,因爲文檔已損壞,我很好奇。 – 2010-12-18 08:00:32

回答

4

我記得不久前在Schema Definition Page上閱讀了有關波浪符運算符的內容。 雖然(就像我剛開始學習Scala一樣)它仍然對我來說聽起來有點模糊,但它是關於在原始類型和自定義類型之間進行消歧的。引用一小片

...

重要:在PrimitiveTypes模式下,可以數字運算符

之間有模糊之處當使用org.squeryl.PrimitiveTypeMode,編譯器會像對待的表達 作爲布爾值在下一個示例中。是需要的〜函數來告訴編譯器的 左側是TypedExpressionNode的節點[INT]這將導致整個表達式是一個 LogicalBoolean這是where子句需要什麼:

...

希望有幫助。

+0

好的。因此,〜op似乎來自NumericalExpression,您可以在輸入〜後從PrimitiveTypeMode進行一些神奇的隱式轉換。你需要它的唯一原因是因爲implicits的神奇性質,你永遠不知道任何算術/邏輯操作會解決什麼。使用'plus'或'〜'確保您獲得正確的類型。 – 2010-12-18 14:33:12