Что делает тильдный оператор SQueryL? - PullRequest
3 голосов
/ 18 декабря 2010

Я читал документацию SQueryL по обновлению и увидел:

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

Мне было трудно найти метод ~ из исходного кода SQueryL, и связанная документация явно нене говори мне, что он делает.Кто-нибудь хочет объяснить?

1 Ответ

4 голосов
/ 18 декабря 2010

Я помню, что читал об операторе тильды не так давно на странице определения схемы . Речь идет о неоднозначности между примитивом и пользовательским типом, хотя (поскольку я только начинаю изучать Scala) для меня это звучит немного расплывчато;). Процитирую маленький кусочек

...

важно: в режиме PrimitiveTypes могут быть неоднозначности между числовыми операторами

При использовании org.squeryl.PrimitiveTypeMode компилятор будет обрабатывать выражение как один в следующем примере как логическое значение. Функция. ~ Необходима, чтобы сообщить компилятору, что левая сторона - это узел TypedExpressionNode [Int], который заставит все выражение быть LogicalBoolean - это то, что принимает предложение where:

...

Надеюсь, это поможет.

...