Динамическое число аргументов функции - PullRequest
1 голос
/ 10 октября 2019

я хочу создать функцию с динамическим числом аргументов

example :- 
foo("a","b","c","d")
foo("a","b")
foo("a","b","c")

, но я не хочу использовать массив или список

Ответы [ 4 ]

7 голосов
/ 10 октября 2019

Используя vararg, вы можете достичь этой функциональности. vararg позволяет пользователю добавлять несколько параметров

Все параметры должны иметь один и тот же тип данных, вы не можете передать один из них - Integer или другой - тип String

demoArg("one","two","three")
demoArg("one","two","three","four","five")

fun demoArg(vararg  argList : String){
    for(str in argList){
        print(str);
    }
}
3 голосов
/ 10 октября 2019

Вы можете использовать vararg .

Попробуйте вот так

fun foo(vararg input: String){
    for (item in input) {
        print(item)
    }
}
foo("a","b","c","d")
foo("a","b")
foo("a","b","c")

Varargs разрешить пользователям проходить вcomma-separated список arguments(data type should be same), который compiler превратит automatically wrap в array

0 голосов
/ 10 октября 2019

vararg ключевое слово используется (например, ... в Java) для переменного числа аргументов.

vararg также поддерживает оператор spread . Таким образом, вы можете сделать это

val abc = listOf("a", "b", "c") foo("x", "y", "z", *abc, "p", "q", "r") // x, y, z, a, b, c, p, q, r в качестве аргументов

0 голосов
/ 10 октября 2019

Объявите свой метод так:

fun foo(vararg args: String) {
    //TODO
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...