2017-10-12 4 views
-1

Existe-t-il un moyen de créer une variable pour stocker des chaînes et des fonctions? Comme var x:dynamic où x peut être de tout type ou une fonction: x="foo"; x= {print (...)}Comment créer une variable pouvant prendre des chaînes et des fonctions dans Kotlin?

dynamic n'est pas un type (il se juste à côté de la vérification de type) et ne fonctionne que dans kotlin.js (JavaScript). Y a-t-il un type qui inclut les types de fonctions et Any?

+0

Kotlin n'a pas les types de syndicats, de sorte que le mieux que vous avez est 'Any'. Mais pourquoi avez-vous vraiment besoin de stocker des chaînes et des fonctions dans la même variable? – marstran

+0

Je veux connaître la relation entre les types Any et Function. – dilvan

+0

'Any' est juste' Object'. Les objets fonctionnels sont des objets. C'est la seule chose commune que vous trouverez. Il ne peut pas y avoir un type incluant 'Any' car' Any' est une superclasse de tout. – Moira

Répondre

1

J'essaie ce code et fonctionne très bien. La variable x est Any pour pouvoir contenir n'importe quel type de données (non nullable). Pour conserver des données valables, utilisez Any?

 var x: Any = "foo" 
     println(x) 

     x = { println("") } 
     x.invoke() 

Le casting intelligent IDE la variable mais vous pouvez aider à la distribution en utilisant ce

 (x as()->Unit).invoke()