Function 带dependecies的自类型注释:如何访问内部方法

Function 带dependecies的自类型注释:如何访问内部方法,function,scala,inner-classes,self-type,Function,Scala,Inner Classes,Self Type,现在,我想将我的数据库连接拆分为“设备”,这些设备都有自己准备好的语句等。不过,它们都应该引用这个Connection实例。我希望能够从外部调用内部函数 不必重命名这些函数,最好的方法是什么 顺便说一句,我的手是真正禁用的atm。你的意思是你希望能够进行数据库连接。登录(…)?如果是这种情况,您首先需要一个LoginDevice实例。根据您的示例,LoginDevice中没有状态,因此它可以是一个对象。然后在DatabaseConnection中声明函数,如val login=LoginDevi

现在,我想将我的数据库连接拆分为“设备”,这些设备都有自己准备好的语句等。不过,它们都应该引用这个
Connection
实例。我希望能够从外部调用内部函数

不必重命名这些函数,最好的方法是什么


顺便说一句,我的手是真正禁用的atm。

你的意思是你希望能够进行数据库连接。登录(…)?如果是这种情况,您首先需要一个LoginDevice实例。根据您的示例,LoginDevice中没有状态,因此它可以是一个对象。然后在DatabaseConnection中声明函数,如
val login=LoginDevice.login\uu
。这与我想要的结果非常接近。然而,如果我有10台设备,我必须每台设备声明两次,这似乎是多余的。还有其他方法吗?你介意用额外的,比如说10台设备来展示整个示例,以便更容易了解你在做什么吗?你当然不能做
数据库连接。登录
内部
处理
,因为
login
不是
数据库连接
对象的公共方法。明天将发布,我的手在当前状态下不太能用,我现在要睡觉了。不过先谢谢你,晚安。:)好的,我扩展了示例:。正如您所看到的,我不想混淆所有准备好的语句,我也不希望这个
val login=LoginDevice.login\u
所带来的冗余(尽管如果没有提供其他解决方案,这将是我的解决方案):)
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.")
    }
}