我有一些带有扩展功能的类,例如:
class SampleClass {
fun NavGraphBuilder.navGraph() { }
}
当我尝试在 NavGrapghBuilder 范围内调用此函数时,它不起作用
val sampleClass = SampleClass()
NavHost(navController = rememberNavController(), startDestination = Player) {
sampleClass.navGraph() // Unresolved reference: navGraph
}
NavHost 是带有接收器的尾随 lambda 的函数:
@Composable
public fun NavHost(
// ...
builder: NavGraphBuilder.() -> Unit
): Unit
navGraph
需要多种接收器类型,一种是SampleClass
,另一种是NavGraphBuilder
。由于您将该函数定义为 NavGraphBuilder
的扩展,因此您不能使用 SampleClass
对象作为显式接收器。但如果你把它转过来,它就会起作用:
with(sampleClass) { navGraph() }