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
  }
}
Другие вопросы по тегам