具有依赖项的自我类型注释:如何访问内部方法

时间:2013-02-28 21:13:21

标签: function scala inner-classes self-type

object DatabaseConnection { this: LoginDevice =>
    val Connection = ...

    class LoginDevice {
        val prep = Connection.prepareStatement("SELECT * FROM USER WHERE NAME = ?")
        def login(username: String, password: String) = {
            prep.setString(1, username)
            val rs = prep.executeQuery
            if (!rs.next)
                throw User404
            new User(rs.getString("Name"), ...)             
        }
    }
}

object RequestHandler {
    type Request = (String, String)

    def handle(request: Request) = request._1 match {
        case "Login" => {
            val info = request._2.split(",")
            DatabaseConnection.login(info(0), info(1)) // SYNTAX ERROR
        }
        case _ => throw new Exception("Request type is not valid.")
    }
}

现在,我想将我的DatabaseConnection拆分为具有自己的预备语句等的“设备”。但是,它们都应该引用这个Connection实例。我希望能够从外部调用内部函数。

如果不重命名任何这些功能,最好的方法是什么?

btw sry for short text我的手被彻底禁用atm。

0 个答案:

没有答案