Страницы

Поиск по вопросам

среда, 5 февраля 2020 г.

Назначение символа * при создании объекта в котлине

#java #kotlin


Здравствуйте. Перевел код с  java на kotlin  со помощью автоматического конвертера.
Появилась конструкция, которую я не могу понять. Что означает звездочка при создании
объекта (return Sort(*orders)) ? Мне нужно хотя бы название этой конструкции для дальнейшего
гугления.

class Sort (vararg orders: SortOrder) {

var orders: List = ArrayList()

companion object {
    fun sort(vararg orders: SortOrder): Sort {
        return Sort(*orders)
    }
}

init {
    this.orders = Arrays.asList(*orders)
}

override fun equals(other: Any?): Boolean {
    if (this === other) return true
    if (other == null || javaClass != other.javaClass) return false
    val sort = other as Sort?

    return orders == sort!!.orders
}

    


Ответы

Ответ 1



Согласно документации +, -, *, /, % - mathematical operators * is also used to pass an array to a vararg parameter (также используется для передачи массива параметру vararg) Также When we call a vararg-function, we can pass arguments one-by-one, e.g. asList(1, 2, 3), or, if we already have an array and want to pass its contents to the function, we use the spread operator (prefix the array with *): val a = arrayOf(1, 2, 3) val list = asList(-1, 0, *a, 4) Перевод Когда мы вызываем vararg-функцию, мы можем передавать аргументы один за другим, например, asList (1, 2, 3), или, если у нас уже есть массив и мы хотим передать его содержимое функции, мы используем оператор распространения (spread) (префикс массива с *):

Комментариев нет:

Отправить комментарий