Kotlin中的整数是否等于数学expression式?
我正在制作一个解决数学expression式的程序,例如2 + 2。 我可以设置一个整数等于这样的东西:
val input = "2+2" input.toInt()
Kotlin没有任何内置的评估任意expression的方式。 toInt
函数只能解析一个包含单个整数的String
(它只是Integer.parseInt
的一个包装)。
如果你需要这个function,你必须自己分析和评估expression式。 这个问题和用Java来完成没有什么不同,为此您可以在这里find讨论和多种解决方案(包括黑客,代码示例和库)。
不,你不能。
你可以这样做:
val a = "2" val b = "2" val c = a.toInt() + b.toInt()
要么
val input = "2+2" val s = input.split("+") val result = s[0].toInt() + s[1].toInt()
这可以通过kotlin脚本引擎完成。 有关详细信息,请参阅动态评估Kotlin中的模板化字符串
但简而言之就是这样的:
val engine = ScriptEngineManager().getEngineByExtension("kts")!! engine.eval("val x = 3") val res = engine.eval("x + 2") Assert.assertEquals(5, res)
不,Integer不能等于数学expression式。
您可以使用字符串模板
字符串可能包含模板expression式,即被评估的代码片段,其结果被连接到字符串中。
模板expression式以美元符号($)开始,由一个简单的名称组成:
val i = 10 val s = "i = $i" // evaluates to "i = 10"