[英]Print result of a function
如何在Scala中更改此功能,以便在IntelliJ IDEA上运行时能够查看结果?
object poisson_sample_size extends App {
def main(theta1: Double, theta2: Double): Double = {
val theta1 = 0.0025
val theta2 = 0.0030
val num = 4
val den = ((theta1 + theta2) / 2) - math.sqrt(theta1 * theta2)
val x = num / den
println(x: Double)
}
}
我想检查结果是我期待的结果。 考虑到我刚开始学习Scala,我不确定这是错误的证据。
我试图将(num / den)
的结果归因于一个变量,然后print
变量本身,但它没有做我所期望的。
尝试将代码更改为以下内容:
object poisson_sample_size extends App {
val t1 = 0.0025
val t2 = 0.0030
val result = calculate(t1, t2)
println(result)
def calculate(theta1: Double, theta2: Double): Double = {
val num = 4
val den = ((theta1 + theta2) / 2) - math.sqrt(theta1 * theta2)
num / den
}
}
通过使您的对象扩展App
,您可以免费获得main
方法。 然后,使用main
对于自定义计算方法不是一个好主意,因为它会与真正的main
方法产生混淆,所以我将其更改为calculate
。 然后,您需要确保调用calculate
方法,这可能是您在当前示例中看不到任何内容打印的真正原因。
如果我理解正确,为了维护函数main
的预期结果,你只需要插入x
作为函数中的最后一个语句,它在Scala中具有隐式return
含义。
object poisson_sample_size extends App {
def main(theta1: Double, theta2: Double): Double = {
val num = 4
val den = ((theta1 + theta2) / 2) - math.sqrt(theta1 * theta2)
val x = num / den
println(x: Double)
x // same as: return x
}
val theta1 = 0.0025
val theta2 = 0.0030
main(theta1, theta2)
}
就像现在这样,你应该得到一个编译错误信息,因为println有一个Unit
返回类型,但是你声明main
有一个Double
返回类型。
请注意,在扩展App
您不必实现main
方法。 运行应用程序时会执行object
的实际正文。 请试试这个修改过的版本。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.