我将try 总结不同的意见,以便对您的问题给出一个有希望的完整答案.
Incompatible type
首先是你的实际问题.Math.pow
函数具有以下签名,如the documentation所示:
public static double pow(double a, double b)
但是,您试图通过向其中传递两个Int
eger来调用此函数,因此会收到编译错误:
类型不匹配:推断的类型为Int,但应为Double
与之前可能使用过的其他一些语言不同,Kotlin不执行数字类型的自动类型转换,您可以在这question on StackOverflow中找到更多信息.
Mistake in math formula
假设您的目标是计算圆的面积,那么您的公式中有一个错误.
应该是A = r^2 * π
,但你有A = r^r * π
.
Code reuse
如果您想为不同类型的参数提供相同的函数,那么一次实现它并在重载版本中使用单个实现可能会很有用.
与原始代码保持一致,可能会出现以下情况.
fun main(args: Array<String>) {
val radius = 13;
println(getArea(radius));
}
fun getArea(radius: Double): Double {
val area = Math.pow(radius, 2) * Math.PI;
return area;
}
fun getArea(radius: Int): Double {
return getArea(radius.toDouble())
}
Syntax improvements
Kotlin是一种非常有表现力的语言,它允许您将代码简化如下.Kotlin中不需要分号.对于单个表达式的简单函数,Kotlin提供了neat shortened syntax.Kotlin的标准库还提供基本的数学功能,如pow function和π constant.因此,您不需要依赖Java/JVM特定的函数,例如Math
中的函数.
import kotlin.math.PI
import kotlin.math.pow
fun getArea(radius: Double): Double =
radius.pow(2) * PI
fun getArea(radius: Int): Double =
getArea(radius.toDouble())