Tipo genérico <T> parámetro antes del nombre de la función

Zorgan:

¿Cuál es el uso del <T>parámetro de tipo ante el nombre de función en Kotlin?

Ejemplo:

fun <T> MutableList<T>.swap(index1: Int, index2: Int) {
    val tmp = this[index1] 
    this[index1] = this[index2]
    this[index2] = tmp
}

Refiriéndose a la primera <T>arriba.

He tratado de buscar a través de los documentos Kotlin con respecto a los genéricos, así como los genéricos de Java sin embargo, en su mayoría sólo tocan en el segundo <T>no el primero.

Lino:

Se utiliza para indicar que los genéricos se utilizan y no algún tipo Tse hace referencia.

Echar un vistazo a este ejemplo completamente válida

fun <String> MutableList<String>.swap(index1: Int, index2: Int)

Ahora bien, esto puede ser llamado en cualquier MutableList<*>y no sólo MutableList<String>. Si no iba a escribir <String>después de la funpalabra clave, ¿cómo Kotlin saber que en realidad estabas referencia a una genérica y no kotlin.String?

Lo mismo ocurre con el ejemplo que has demostrado. El <>después de que los funintroduce sólo un nuevo parámetro genérico, de lo contrario Kotlin se quejaban de que no sabría el tipoT

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=221957&siteId=1
Recomendado
Clasificación