【问题标题】:How to use packages in Scala?如何在 Scala 中使用包?
【发布时间】:2015-05-21 00:20:58
【问题描述】:

我目前正在学习 Scala,并发现名为 Squants 的 this awesome framework 可以做各种很酷的事情,比如转换。问题是:我不知道如何使用它。

我来自 ruby​​ gems 和 node 包的背景,所以我希望 Scala 与它有相似的方面。

我找到的documentation 没有多大帮助,所以我开始搜索不同的术语。我发现了这个Stack Overflow question,它用一种叫做“sbt”的东西解决了这个问题。我已经知道如何使用scalac 编译文件并使用scala 运行它们,所以我对sbt 的含义感到有些困惑,直到我做了一些研究。我尝试按照说明将libraryDependencies 替换为"com.squants" %% "squants" % "0.4.2",但这只会在sbt 控制台中引发大量错误。最终,我希望包能与我的代码一起工作,而不是在控制台中。

然后我在一个名为Sonatype 的网站上找到了该框架。我从这个网站下载了一个 jar 文件,但不确定如何在 Scala 中使用 jar 文件(如果可能的话?)。搜索这个发现了一些not-so-beginner-friendly 的结果。

作为参考,这是我用来测试包的 scala 文件:

import com.squants._

object HelloSquants {
    def main(args: Array[String]): Unit = {
        val x: Power = Kilowatts(12)
        val y: Power = Megawatts(0.023)
        val sum = x + y
        println(x + " plus " + y + " equals " + sum)
    }
}

让这个包在 Scala 中工作的正确方法是什么?

【问题讨论】:

    标签: scala


    【解决方案1】:

    哼很多问题。

    首先,您有点混淆了术语。 package 是代码的名称空间。你可以写一些代码

    package foo {
      class Apple...
    }
    
    package bar {
      class Apple...
    }
    

    然后根据您要使用的 Apple 类,您可以导入 foo.Apple 或 bar.Apple。 Foo 和 bar 是包.. 你不是真的指包。

    Sbt 是学习的必要邪恶。 Scala 项目变得越来越大,而你引入了一堆。我认为当您说 package 时,您的意思是 library

    所以是的,遵循一些简单的 SBT 教程...一个好的起点是 http://www.scala-sbt.org/release/tutorial/

    添加

    "com.squants"  %% "squants"  % "0.4.2"
    

    你的 build.sbt 是正确的,它会下载 squants 库,并将它包含在你的编译路径中。但是,它不会自动将其添加到您的运行路径中。为此,我建议您在想法 https://www.jetbrains.com/idea/ 中编码,以便它可以看到您的 build.sbt 文件,并为您将正确的内容添加到您的类路径中......然后您应该能够右键单击并运行您的代码。

    【讨论】:

    • 感谢您的澄清。我将开始学习 sbt,看看我能去哪里。另一个问题:你说 Scala 项目变大了——我目前正在使用 scalac 一次编译一个文件,所以我假设 sbt 会让我根据它们的功能 / 等将大量的 scala 文件放在多个目录中?谢谢!
    • 是的。 SBT compile 编译所有 scala 文件。它也很聪明,只会编译自上次编译后更改的文件
    猜你喜欢
    • 2011-07-02
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 2011-12-23
    • 2014-12-17
    • 2011-04-11
    • 2011-09-28
    • 2011-07-04
    相关资源
    最近更新 更多