программная установка `типа` абстрактного типа - PullRequest
1 голос
/ 17 декабря 2009
class MyModel(var username:String, var password:String) extends FrameworkModel 

object MyModelQuery extends FrameworkQuery { 
  type T = MyModel 
} 

trait FrameworkQuery { 
type T 
//do something with that type 
} 

Итак, я получаю класс и объект, где последний смешивается в черте, которая определяется как абстрактный тип. Есть ли способ, которым я мог бы программно установить type на тип класса MyModel, чтобы клиенту это не понадобилось? то есть "объект MyModelQuery расширяет FrameworkQuery" позаботится об этом

Ответы [ 2 ]

0 голосов
/ 17 декабря 2009

Можно ли добиться подобного эффекта, просто вложив запрос в модель?

trait FrameworkModel {
  val model = this
  trait FrameworkQuery {
    type T = model.type
    def getModel: T = model
  }
}

class UserModel extends FrameworkModel {
  // model stuff...
  object UserQuery extends FrameworkQuery {
    // query stuff... 
  }
}
0 голосов
/ 17 декабря 2009
trait T{
    type X = this.type
    def x: X = this
}
object A extends T{
    def b = "Yep"
}    
scala> A.x.b
res0: java.lang.String = Yep
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...