Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

269
Vistas
Equivalente de Kotlin para la palabra clave "with" en C# (clase de datos)

En C# hay un tipo de clase que se llama "registro" que es más o menos lo mismo que una clase de "datos" en Kotlin.

Al usar un registro en C#, puede usar la palabra clave "con" para crear una nueva instancia de su registro con algunas propiedades establecidas en valores específicos (consulte https://docs.microsoft.com/en-us/dotnet/csharp/ referencia-idioma/operadores/con-expresión )

Me preguntaba si hay una forma similar de hacerlo en kotlin. No puedo encontrar nada con respecto a eso, y la forma en que lo hago por ahora es definiendo la función que hace el trabajo, pero a veces puede ser un poco repetitivo, y se supone que usar la clase de datos me evita ese trabajo repetitivo.

También preferiría evitar el uso de propiedades "var" (para tener instancias inmutables), de ahí mi pregunta.

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Kotlin tiene clases de datos, que están cerca de los registros de C#. Como puede ver en la documentación de Kotlin:

No es inusual crear clases cuyo objetivo principal es almacenar datos. En tales clases, algunas funciones estándar y algunas funciones de utilidad a menudo se derivan mecánicamente de los datos. En Kotlin, se denominan clases de datos y se marcan con datos:

data class User(val name: String, val age: Int)

El compilador deriva automáticamente los siguientes miembros de todas las propiedades declaradas en el constructor principal:

 equals()/ hashCode() pair toString() of the form "User(name=John, age=42)" componentN() functions corresponding to the properties in their order of declaration. copy() function (see below).

La última línea muestra que el compilador genera automáticamente una función de copy para una clase de datos, y esto es lo que está buscando

Nuevamente de la documentación, el uso sería:

Utilice la función copy() para copiar un objeto, lo que le permite modificar algunas de sus propiedades y mantener el resto sin cambios. [...] A continuación, puede escribir lo siguiente:

 val jack = User(name = "Jack", age = 1) val olderJack = jack.copy(age = 2)
over 4 years ago · Santiago Trujillo Denunciar

0

Con una clase de datos, puede usar el método de copy :

 val someData = SomeClass(a = 1, b = 2) val modifiedData = someData.copy(b = 0) // modifiedData = SomeClass(a = 1, b = 0)

Consulte la documentación oficial de la clase de datos.

over 4 years ago · Santiago Trujillo Denunciar

0

¿Quiere decir algo como la función copy() que se genera automáticamente para las clases de datos?

 fun main() { val foo1 = Foo("foo", 5) val foo2 = foo1.copy(value1 = "bar") val foo3 = foo2.copy(value2 = 10) } data class Foo( val value1: String, val value2: Int, )
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda