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

384
Visualizações
¿Cómo puedo usar la anotación @IntRange para la función de extensión de Kotlin para Integer?

a continuación está mi función de extensión de Kotlin:

 infix fun Int.send(data: String) { MsgSendUtils.sendStringMsg( this, data ) }

llamado así:

 8401 send "hi"

y mi requisito es : la persona que llama debe tener más de 8400 .

¿Cómo puedo lograr eso?

Gracias !

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

En teoría, puedes usar la sintaxis @receiver:IntRange(from = 8400) para aplicar una anotación al receptor de una función:

 infix fun @receiver:IntRange(from = 8400) Int.send(data: String) { MsgSendUtils.sendStringMsg(this, data) }

Sin embargo, esto no parece desencadenar el error Android Lint como cabría esperar. Esta es probablemente una característica que falta en el propio linter al inspeccionar el código de Kotlin.

Una solución alternativa sería declarar la función de manera diferente (usando este valor como parámetro en lugar de receptor):

 fun send(@IntRange(from = 8400) id: Int, data: String) { MsgSendUtils.sendStringMsg(id, data) } // or fun String.sendTo(@IntRange(from = 8400) id: Int) { MsgSendUtils.sendStringMsg(id, this) }

De lo contrario, lo mejor que podría hacer en Kotlin puro sería verificar el valor en tiempo de ejecución:

 infix fun Int.send(data: String) { require(this >= 8400) { "This value must be greater than 8400" } MsgSendUtils.sendStringMsg(this, data) }

Tenga en cuenta que, dependiendo de lo que represente este valor, recomendaría usar un tipo más específico en lugar de Int . Por ejemplo, si su Int representa una ID, tal vez debería declarar una value class envuelva este entero. A continuación, puede aplicar las restricciones en el momento de la construcción (todavía en tiempo de ejecución, pero es menos propenso a errores).

Este enfoque también evitaría contaminar el autocompletado en todos los enteros, lo que puede ser bastante molesto en un gran proyecto dado lo específica que es esta función.

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