You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
52 lines
1.1 KiB
52 lines
1.1 KiB
// @Module:Main |
|
import androidx.compose.runtime.* |
|
|
|
fun main() { |
|
var set = mutableSetOf<Int>() |
|
callComposable { |
|
FooTakesTypedComposableLambda { |
|
set.add(1) |
|
"text" |
|
} |
|
FooTakesTypedComposableLambda2(10) { |
|
set.add(2) |
|
it + 100 |
|
} |
|
FooTakesTypedExtesionComposableLambda<String, Any, Unit>("text", Any()) { |
|
set.add(3) |
|
} |
|
MySelect<String>(listOf("1")) { |
|
set.add(4) |
|
} |
|
} |
|
|
|
require(setOf(1, 2, 3, 4) == set) { "Failed when running composables" } |
|
} |
|
|
|
|
|
// @Module:Lib |
|
import androidx.compose.runtime.Composable |
|
|
|
|
|
@Composable |
|
fun <T> FooTakesTypedComposableLambda(composable: @Composable () -> T) { |
|
composable() |
|
} |
|
|
|
@Composable |
|
fun <T> FooTakesTypedComposableLambda2(t: T, composable: @Composable (T) -> T) { |
|
composable(t) |
|
} |
|
|
|
@Composable |
|
fun <T, K, R> FooTakesTypedExtesionComposableLambda(t: T, k: K, composable: @Composable T.(K) -> R) { |
|
t.composable(k) |
|
} |
|
|
|
@Composable |
|
fun <T> MySelect( |
|
options: List<T>, |
|
onChange: (T) -> Unit |
|
) { |
|
onChange(options.first()) |
|
}
|
|
|