Как расширить парсин-комбинаторы Anorm? - PullRequest
1 голос
/ 22 февраля 2012

Как я могу расширить парсин-комбинаторы Anorm и использовать расширения в мое заявление? Я хочу создать методы, аналогичные SqlParser.get, SqlParser.int, SqlParser.str и т. Д., И ожидайте расширить черту SqlParser. Но когда Я расширяю SqlParser, я получаю ошибки компиляции, когда я пытаюсь использовать Существующие методы синтаксического анализатора:

 trait MyService extends SqlParser { 
     def shoesize(id: String): Int = { 
         SQL("select shoesize from person where id = {id}")
         .on("id" -> id).as (int ("shoesize")) 
     } 
 } 

Результат:

несоответствие типов; найдено: MyService.this.RowParser [Int] требуется: play.db.anorm.SqlParser.Parser [Int] Ошибка в приложении с аргументами по умолчанию.

Но это компилируется:

trait MyService  { 
    import play.db.anorm.SqlParser._ 
    def shoesize(id: String): Int = { 
        SQL("select shoesize from person where id = {id}").on("id" -> id)
        .as (int ("shoesize")) 
    } 
} 

Как мне реализовать методы комбинатора парсера?

...