在 Scala 中导入外部库
Import external library in Scala
我正在尝试在项目中导入库 org.apache.commons.math3.distribution.NormalDistribution
。
我在 IntelliJ IDEA 14.1 中为一个项目写了以下几行。我确信这里和那里几乎没有错误(我是 Scala 的新手,之前也没有 Java 经验),对此深表歉意。我的问题是 Scala 似乎没有导入库,我不能在我的对象主体上使用与之关联的函数(即 cumulativeProbability
)。
import org.apache.commons.math3.distribution.NormalDistribution
import scala.math._
// Compute statistical power given confidence level, significance level, sample sizes and means on the
// Normal distribution case
object test_math_lib {
def main(n1: Int, n2: Int, significance: Double, mu1: Double, mu2: Double, alternative: String): Double = {
if alternative = "two sided":
val b = 0.50 // just for the sake of testing
val x = new (1 - cumulativeProbability(b))
}
}
这只是一个草稿,我只是自己编写函数,我之前没有任何使用 Java 和 Scala 的经验。
您只能在 class NormalDistribution
.
的实例上调用方法 cumulativeProbability
因此,您首先必须创建一个 NormalDistribution
对象,然后调用该对象的方法。像这样:
val distr = new NormalDistribution()
val prob = distr.cumulativeProbability(b)
我不知道这行中的 new
是什么意思:
val x = new (1 - cumulativeProbability(b))
但这不是有效的语法。您使用 new
运算符创建了一个新对象 - 我不知道您的意图是什么。
首先您需要确保该依赖项对项目可用。
例如,如果您的项目是基于 sbt 的,请参阅 http://www.scala-sbt.org/0.13/docs/Library-Management.html,如果您使用 maven,则情况几乎相同。
更新项目定义后,您需要为 IntelliJ 重新创建项目文件,我认为您可以对 sbt 使用 sbt-idea,最后重新导入项目。应该集成对 maven 的支持。
如果您直接在 IntelliJ 中创建项目而不依赖这两个,那么您需要将 jar 依赖项添加到构建路径,请参阅 https://confluence.jetbrains.com/display/IntelliJIDEA/Dependencies+Management+%28Build+Path%29。
如果配置正确,您将不会在库的导入语句下看到红色波浪线。
关于代码片段,您应该通过检查 Javadoc 来检查 NormalDistribution
实际可以做什么,我读到您有一些不同的构造函数,您可以通过它们配置您的实例,例如设置一个显式随机生成器。
当您获得实例时,您可以在其上调用所有 public 实例方法。
我正在尝试在项目中导入库 org.apache.commons.math3.distribution.NormalDistribution
。
我在 IntelliJ IDEA 14.1 中为一个项目写了以下几行。我确信这里和那里几乎没有错误(我是 Scala 的新手,之前也没有 Java 经验),对此深表歉意。我的问题是 Scala 似乎没有导入库,我不能在我的对象主体上使用与之关联的函数(即 cumulativeProbability
)。
import org.apache.commons.math3.distribution.NormalDistribution
import scala.math._
// Compute statistical power given confidence level, significance level, sample sizes and means on the
// Normal distribution case
object test_math_lib {
def main(n1: Int, n2: Int, significance: Double, mu1: Double, mu2: Double, alternative: String): Double = {
if alternative = "two sided":
val b = 0.50 // just for the sake of testing
val x = new (1 - cumulativeProbability(b))
}
}
这只是一个草稿,我只是自己编写函数,我之前没有任何使用 Java 和 Scala 的经验。
您只能在 class NormalDistribution
.
cumulativeProbability
因此,您首先必须创建一个 NormalDistribution
对象,然后调用该对象的方法。像这样:
val distr = new NormalDistribution()
val prob = distr.cumulativeProbability(b)
我不知道这行中的 new
是什么意思:
val x = new (1 - cumulativeProbability(b))
但这不是有效的语法。您使用 new
运算符创建了一个新对象 - 我不知道您的意图是什么。
首先您需要确保该依赖项对项目可用。
例如,如果您的项目是基于 sbt 的,请参阅 http://www.scala-sbt.org/0.13/docs/Library-Management.html,如果您使用 maven,则情况几乎相同。
更新项目定义后,您需要为 IntelliJ 重新创建项目文件,我认为您可以对 sbt 使用 sbt-idea,最后重新导入项目。应该集成对 maven 的支持。
如果您直接在 IntelliJ 中创建项目而不依赖这两个,那么您需要将 jar 依赖项添加到构建路径,请参阅 https://confluence.jetbrains.com/display/IntelliJIDEA/Dependencies+Management+%28Build+Path%29。
如果配置正确,您将不会在库的导入语句下看到红色波浪线。
关于代码片段,您应该通过检查 Javadoc 来检查 NormalDistribution
实际可以做什么,我读到您有一些不同的构造函数,您可以通过它们配置您的实例,例如设置一个显式随机生成器。
当您获得实例时,您可以在其上调用所有 public 实例方法。