Me gusta
class A { public var tip : String = "" } class B { val tip2 = A().tip println(tip2) } class C { tiper("abc") tiper("def") tiper("ghi") fun tiper(txt) { A().tip = txt B.showTip() } }Para ser breve, tengo una clase B, que genera un 'consejo'. Existe la clase C, que crea el texto para el 'consejo'. Y necesito enviar un valor de la clase C a la clase B. Intenté hacerlo a través de la clase A, envié el valor allí y luego lo leí en la clase B para mostrarlo. Pero en este caso solo muestra el valor "", es decir, por defecto de la clase A. ¿Por qué no se toma el valor pasado por la clase C?
El código anterior está muy simplificado y es una descripción hipotética de lo que realmente tengo en mi código. Este es solo un ejemplo abstracto.
Soy un terrible programador de Kotlin, me acaban de pedir que haga este trabajo, así que no sé mucho al respecto, espero su ayuda.
Estás creando un nuevo objeto del tipo A cada vez que llamas al constructor A() .
Por lo tanto, dentro de tiper , está creando un objeto de tipo A y configurando el valor de tip en esa instancia de objeto.
Luego, sin embargo, crea un objeto de tipo B que crea un nuevo objeto de tipo A internamente. Esto no tiene ningún vínculo con el primer objeto de tipo A que ha creado. Por lo tanto, no contiene el valor que desea establecer, sino el valor predeterminado que ha establecido, que es la cadena vacía "" .
Manteniéndose cerca de nuestro ejemplo, puede ajustar el valor en el objeto de tipo A que está incrustado en el objeto de tipo B
class A { var tip: String = "" } class B() { val tipHolder = A() fun showTip() { println(tipHolder.tip) } } fun tiper(txt: String) { val tipPrinter = B() tipPrinter.tipHolder.tip = txt tipPrinter.showTip() } fun main() { tiper("abc") tiper("def") tiper("ghi") }Sin embargo, sin más detalles sobre el problema real, es difícil ayudarlo con el problema subyacente que está tratando de resolver, como lo escribió @aSemy en la sección de comentarios.