Zvlášť v Androide sa stretnete s funkciami, ktoré majú obrovské množstvo argumentov s predvolenými hodnotami. Ukážka (skoro) naozajstnej funkcie:
fun TextField(
value: String,
onValueChange: (String) -> Unit,
modifier: Modifier. = Modifier,
enabled: Boolean = true,
readOnly: Boolean = false,
textStyle: TextStyle = TextStyle.Default,
keyboardOptions: KeyboardOptions = KeyboardOptions.Default,
keyboardActions: KeyboardActions = KeyboardActions.Default,
singleLine: Boolean = false,
maxLines: Int = if (singleLine) 1 else 10,
minLines: Int = 1,
visualTransformation: VisualTransformation = VisualTransformation.None,
onTextLayout: (TextLayoutResult) -> Unit = {},
interactionSource: MutableInteractionSource? = null,
cursorBrush: Brush = SolidColor(Color.Black)
) {
V takomto prípade, ak chceme nastaviť povinné argumenty a argument singleLine na true, potom musíme vymenovať aj všetky ostatné nepovinné argumenty pred argumentom singleLine:
fun main() {
TextField(
"Text", // value
{ }, // onValueChange
Modifier, // modifier
true, // enabled
false, // readOnly
TextStyle.Default, // textStyle
KeyboardOptions.Default, // keyboardOptions
KeyboardActions.Default, // keyboardActions
true // singleLine
)
}
Namiesto vymenovania všetkých argumentov radšej používame vymenovanie argumentov, ktoré chceme nastaviť. Ostatné ostanú nedotknuté:
fun main() {
TextField(
value = "Text",
onValueChange = { },
singleLine = true
)
}
Toto je ekvivalentný zápis k zápisu vyššie. Využívame ho aj vtedy, keď nie je úplne jasné, čo argument presne popisuje. Napríklad:
fun main() {
"Hello World".substring(3, 5) // :(
"Hello World".substring(startIndex = 3, endIndex = 6) // :)
}
Zavolaj vlastnú funkciu s aspoň tromi parametrami v inom poradí pomocou named arguments.
Vytvor funkciu vytvorPouzivatela s predvoleným vekom a pri volaní nastav iba meno a vek podľa názvu parametra.
Prepíš nejasné volanie substring na volanie s parametrami startIndex a endIndex.