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"