Kotlin中的整数是否等于数学表达式?
我正在制作一个解决数学表达式的程序,例如2 + 2。 我可以设置一个整数等于这样的东西:
val input = "2+2" input.toInt()
Kotlin没有任何内置的评估任意表达的方式。 toInt
函数只能解析一个包含单个整数的String
(它只是Integer.parseInt
的一个包装)。
如果你需要这个功能,你必须自己分析和评估表达式。 这个问题和用Java来完成没有什么不同,为此您可以在这里找到讨论和多种解决方案(包括黑客,代码示例和库)。
不,你不能。
你可以这样做:
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不能等于数学表达式。
您可以使用字符串模板
字符串可能包含模板表达式,即被评估的代码片段,其结果被连接到字符串中。
模板表达式以美元符号($)开始,由一个简单的名称组成:
val i = 10 val s = "i = $i" // evaluates to "i = 10"
- 将数据显示从Java转换为Kotlin
- IncompleteAnnotationException:dagger.提供缺少的元素类型
- 如何从单独的AsyncTask修改实例变量
- Kotlin:子构造函数如何使用其父构造函数?
- Android Studio中的R.drawable的访问会引发KotlinFrontEndException
- 如何解决kotlin中通用扩展方法的签名,以解决kotlin中的“类型推断失败”
- 错误:error.NonExistentClass Kotlin在多模块Dagger项目中
- 生成kdoc并在浏览器中观看
- Int :: class.javaPrimitiveType.kotlin引用不等于Int :: class.javaObjectType.kotlin