Como implementar corretamente o padrão Builder em Kotlin considerando as expressões idiomáticas da linguagem?
Olá a todos! Sou novo em Kotlin (migrando do Java) e estou tentando implementar o padrão Builder para uma classe com muitos parâmetros. Em Java, eu normalmente criava uma classe interna estática Builder com métodos set... e build(). Mas em Kotlin, vejo que muitas coisas funcionam de forma diferente, e minha abordagem Java parece verbosa.
Aqui está o que estou tentando fazer:
```kotlin
class User(
val name: String,
val age: Int?,
val email: String?,
val phone: String?,
val address: String?,
val isActive: Boolean
)
```
Quero que apenas name seja obrigatório, os outros campos são opcionais. Em Java, eu escreveria um Builder com métodos como `setAge(age: Int): Builder`, mas em Kotlin isso parece não natural. Tentei usar argumentos nomeados e valores padrão, mas isso não resolve o problema quando é necessário criar o objeto em várias etapas (por exemplo, em uma chain de chamadas).
Também ouvi falar da função `apply {}`, mas não tenho certeza de como aplicá-la corretamente. Digam-me como escrever em Kotlin