Scala: Как переопределить неявные параметры конструктора?
В настоящее время я работаю над небольшим scala DSL для Android ( https://github.com/bertderbecker/scalandroid).
val drawerLayout = new SDrawerLayout {
openDrawerFrom = SGravity.LEFT
fitsSystemWindows = true
navigationView = new SNavigationView {
println(parent) //None - the parent of the drawerlayout
// I want that the parent is the drawerlayout
layout = SLayout.NAVI_HEADER_DEFAULT
fitsSystemWindows = true
}
}
Как я могу сказать SNavigationView использовать SDrawerLayout в качестве своего родителя, а не родителя DrawerLayout?
Итак, в более общем смысле, я хочу иметь класс foo (0), который принимает foo (-1) в качестве неявного параметра, и внутри вы можете определить foo (+1), который будет брать foo (0) из начиная как неявный параметр.
Так что foo "рекурсивный".
Что я хочу это:
class foo()(implicit parent: foo) {
parent = this
val f = new Foo { //takes this as its parent
}
}
1 ответ
Самостоятельные типы:
val drawerLayout = new SDrawerLayout {drawer =>
openDrawerFrom = SGravity.LEFT
fitsSystemWindows = true
navigationView = new SNavigationView {
println(drawer.parent) //None
layout = SLayout.NAVI_HEADER_DEFAULT
fitsSystemWindows = true
}
}