Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

264
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda