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

343
Views
Variable global de Kotlin que se muestra como cero "0"

Soy un completo principiante y comencé a aprender Kotlin a través de tutoriales de YouTube y búsquedas específicas en Google. Cuando estaba siguiendo un tutorial, creó tres variables dentro de la clase MainActivity como las siguientes

 class MainActivity : AppCompatActivity() { var firstName= "David" var secondName= "Tal" var age = 20 override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) }

Luego, usa las variables creadas en una función privada como esta:

 private fun nameRating(){ if(firstName == secondName){ Toast.makeText(applicationContext,"10/10", Toast.LENGTH_LONG).show() }else{ Toast.makeText(applicationContext,"5/10", Toast.LENGTH_LONG).show() }}

Seguí el ejemplo y lo recreé en Android Studio, pero se activó la condición if y pensé que era extraño. Después de la depuración, resultó que tanto firstName como secondName son "0" . Pensé que se suponía que las variables eran globales, y es confuso por qué no funciona porque la variable de age es correcta.

Si estoy completamente equivocado sobre cómo debería funcionar esto, agradecería cualquier explicación/aclaración al respecto.

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

No te preocupes, Kotlin no está haciendo nada extraño o mágico a tus espaldas en este caso.

La palabra clave var en Kotlin significa que está declarando una variable, pero el alcance de esa variable no es "global". El ámbito es el bloque de código en el que se declara la variable. En su caso, declaró 3 variables en un ámbito de clase, por lo que estas son variables de clase y se puede acceder a ellas desde cualquier lugar dentro de la clase MainActivity . Dado que también son public (de forma predeterminada en Kotlin, las declaraciones son públicas, a menos que especifique un modificador de acceso diferente, como private , protected , etc.), también se puede acceder a estas 3 variables desde fuera de la clase (o desde una subclase), como siempre que el código de llamada tenga una referencia a una instancia de esta clase. Esto funciona igual en Java, si algo es público, se aplican las mismas reglas de acceso.

Dado que estas son variables (su valor puede cambiar), también significa que cualquier código que tenga acceso a ellas también puede cambiar sus valores. Por lo tanto, es probable que el comportamiento "extraño" que está experimentando se deba a alguna otra parte del código que establece firstName y secondName en "0" antes de que se llame a su función nameRating() , y es por eso que firstName y secondName son iguales y la condición if se evalúa a la true

En Android Studio, puede hacer clic derecho en una de sus variables y seleccionar "Buscar usos". Aparecerán los resultados de la búsqueda y allí verá partes del código donde otro código podría estar cambiando los valores de sus variables. Con suerte, eso arrojará algo de luz sobre este comportamiento que está viendo.

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!