Kotlin Advertencia de security nula Tokens inesperados (uso; para separar expresiones en la misma línea)

Estaba probando el operador de Elvis en el código de Kotlin en mi aplicación y recibí la siguiente advertencia:

Unexpected tokens (use ; to seperate expressions on the same line) 

Código:

  var key: String = "KEY is" /* "check" is name of String variable which can be null Warning coming on following statement*/ var str : String = check?key.replace("KEY", "ABDS-ASDSA-DSSS")?:check 

Alguna idea de cómo resolver esto?

No entendería por qué necesita algún operador seguro nulo aquí. Ninguna de tus variables es nulable.


Tu escribiste

 check?key.replace("KEY", "ABDS-ASDSA-DSSS")?:check 

? (después del check ) no es un operador en Kotlin.

Es posible que haya deseado el operador condicional ternario, que simplemente se reemplaza por if / else .

A juzgar por su comentario, parece querer el operador de llamada segura , ¿cuál es ?. no ? .

 check?.key?.replace("KEY", "ABDS-ASDSA-DSSS") ?: check 

Hay una diferencia entre el operador de Elvis y el operador de llamada segura. El operador de Elvis funciona con una expresión, mientras que el operador de llamada segura es simplemente un acceso de propiedad nulo seguro o una llamada a un método .

El operador de Elvis devuelve su primer operando si no es nulo, y devuelve el segundo operando en caso contrario.

El ?. el operador devuelve null si el receptor es nulo; de lo contrario, devuelve el resultado de la llamada.

kotlin no es compatible con el operador ternario.

e incluso el check no es una variable boolean en su caso, hágalo boolean o utilícelo como

 var check: String = "something here" var key: String = "KEY is" /*Warning coming on following statement*/ var str : String = key.replace("KEY", "ABDS-ASDSA-DSSS")?:check