Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

386
Views
¿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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!