2015-01-05 2 views
1

Я знаю, что могу определить таблицу в Slick следующим образом:Что такое тип тегов?

class MyTable(tag: Tag) 

но что именно?

Я читал документы, и он говорит:

Тег отмечает определенную строку, представленную в AbstractTable инстанции.

это не помогает мне,

  1. , что это означает, что определенный ряд?
  2. как оно это представляет?
  3. Почему мне нужно определить его в моем ctor?
  4. почему он называется Tag что это мечение?
  5. Мне нужно написать это Tag, когда я создаю класс Table, но я хочу понять, почему я пишу этот код, а не просто следую slick, который говорит мне, что именно так вы определяете таблицу.
+1

Может ли помочь вам [источник] (https://github.com/slick/slick/blob/master/src/main/scala/scala/slick/lifted/AbstractTable.scala)? –

+0

Я посмотрел на этот источник, он продолжает говорить: «Тег знаменует определенную строку» почему? «Верните новый экземпляр AbstractTable с этим тегом», почему? "def taggedAs (путь: узел): AbstractTable [_]" зачем пометить его? «Тег для экземпляров таблицы, представляющих узел» ok, а что такое тег? "абстрактный класс RefTag (val path: Node) расширяет тег", так что есть тег ref, что это такое? «trait BaseTag расширяет тег» другой тег, что это такое? «Запечатанный признак тега», зачем мне это нужно? – Jas

+1

Если вы понимаете слово «тег», то нетрудно понять, что такое пометка (или перейти на [переводчик Google] (https: //translate.google.en), если вы иностранец). Когда вы создаете таблицу, вы даете ей тег, потому что это требует все экземпляры AbstractTable. Когда slick генерирует SQL, эти теги могут дать новый путь в узлах AST, как я думаю. Тег может быть средним значением в качестве идентификатора tablemodel. –

ответ

3

Вы можете думать о теге как псевдоним SQL. Он различает разные экземпляры одной и той же таблицы в запросе.

+2

спасибо, это добавляет много моего понимания, но почему я должен знать об этом? если я не обновляю вообще этот тег param 'class Coffees (tag: Tag) extends Table [(String, Double)] (tag,« COFFEES ») {', то почему мне нужно иметь это в моем пятнистом клиентском коде ? все, что я делаю, это передать его, как родителям, почему мне нужно увидеть его в моем коде? почему это не только внутреннее для пятна кода? – Jas

+1

Когда вы создаете TableQuery из подкласса Table, Slick генерирует тег и передает его. Не уверен прямо сейчас, если бы мы могли сделать это по-другому, но в то время это казалось необходимым. – cvogt

+1

@szeiger может иметь некоторое представление о списке рассылки, он добавил его тогда – cvogt