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

366
Visualizações
Equivalente de Kotlin para `@autoclosure` de Swift

Me pregunto si hay un equivalente a la función @autoclosure de Swift

Esencialmente, quiero poder crear un argumento en una función o constructor/inicializador que pueda tomar otra función que tome parámetros y ejecutarla:

 class Step(handler: () -> Unit) { init { handler() } } Step(aFunctionThatTakesParameters(parameter: String)) // <- Is there a way to get something like this working?

Como referencia, el código equivalente en Swift se ve así:

 struct Step { init(_ handler: @autoclosure () -> Void) { handler() } } Step(aFunctionThatTakesParameters(parameter: ""))
over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Abrí la documentación de Swift para cierres automáticos en el enlace: https://docs.swift.org/swift-book/LanguageGuide/Closures.html#ID543

Eso hace referencia a este código:

 var customersInLine = ["Chris", "Alex", "Ewa", "Barry", "Daniella"] print(customersInLine.count) // Prints "5" let customerProvider = { customersInLine.remove(at: 0) } print(customersInLine.count) // Prints "5" print("Now serving \(customerProvider())!") // Prints "Now serving Chris!" print(customersInLine.count) // Prints "4"

Luego escribí lo siguiente para traducir de Swift a Kotlin:

 val customersInLine = mutableListOf("Chris", "Alex", "Ema", "Barry", "Daniella") println(customersInLine.size) // Prints "5" val customerProvider = { customersInLine.removeAt(0) } println(customersInLine.size) // Prints "5" println("Now serving ${customerProvider()}!") // Prints "Now serving Chris!" println(customersInLine.size) // Prints "4"

Si bien esto no parece dar el resultado esperado que está buscando, podría hacer algo más en la línea de ...

 class Step (handler: () -> Unit) { init { handler() } } fun myParamFunction(a: String, b: String) { a + b } Step { myParamFunction("Hello ", "there") }

En este caso, lo mejor que puede hacer Kotlin es tomar una función lambda pura y llamar internamente a una función a la que se le han dado parámetros para llamar.

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