正文
IntelliJ中的Scala入门
小程序:扫一扫查出行
【扫一扫了解最新限行尾号】
复制小程序
【扫一扫了解最新限行尾号】
复制小程序
IntelliJ IDE中的Scala入门
创建项目
-
打开IntelliJ并单击File => New => Project
-
在左侧面板中,选择Scala。在右侧面板中,选择IDEA。
-
将项目命名为HelloWorld
-
假设这是您第一次使用IntelliJ创建Scala项目,则需要安装Scala SDK。在Scala SDK字段的右侧,单击“ 创建”按钮。
-
选择最高版本号(例如2.12.2),然后单击“ 下载”。这可能需要几分钟,但后续项目可以使用相同的SDK。
-
创建SDK并返回“新建项目”窗口后,单击“ 完成”。
编写代码
-
在左侧的Project窗格中,右键单击
src
并选择 New => Scala class。
-
命名该类
Hello
并将Kind更改为
object
。
-
将类中的代码更改为以下内容:
object Hello extends App {
println("Hello, World!")
}
运行它
-
右键单击
Hello
代码并选择Run'Hello'。
-
你完成了!
尝试使用Scala
src
并选择 New => Scala class。
Hello
并将Kind更改为
object
。
object Hello extends App {
println("Hello, World!")
}
Hello
代码并选择Run'Hello'。
Scala Worksheets是一种尝试代码示例的好方法
-
在左侧的项目窗格中,右键单击
src
并选择New => Scala Worksheet。 - 将新的Scala工作表命名为“Mathematician”。
- 在工作表中输入以下代码:
def square(x: Int) = x * x square(2)
当您更改代码时,您会注意到它会在右侧窗格中进行评估。
使用IntelliJ和sbt构建Scala项目
创建项目
-
如果未从命令行创建项目,请打开IntelliJ并选择“创建新项目”
-
在左侧面板中,选择Scala,然后在右侧面板上选择SBT
-
单击下一步
-
将项目命名为“SBTExampleProject”
-
如果已在命令行上创建项目,请打开IntelliJ,选择
Import Project
并打开
项目
的
build.sbt
文件
-
确保JDK版本为1.8且SBT版本至少为0.13.13
-
选择“ 使用自动导入”,以便在可用时自动下载依赖项
-
选择完成
了解目录结构
- 在左侧面板中,选择Scala,然后在右侧面板上选择SBT
- 单击下一步
- 将项目命名为“SBTExampleProject”
build.sbt
文件
sbt创建了许多目录,一旦开始构建更复杂的项目,这些目录就非常有用。你现在可以忽略它们中的大多数,但是这里可以看到所有内容:
- .idea (IntelliJ files)
- project (plugins and additional settings for sbt)
- src (source files)
- main (application code)
- java (Java source files)
- scala (Scala source files) <-- This is all we need for now
- scala-2.12 (Scala 2.12 specific files)
- test (unit tests)
- target (generated files)
- build.sbt (build definition file for sbt)
编写Scala代码
-
在左侧的“ 项目”面板上,展开
SBTExampleProject
=>src
=>main
-
右键单击
scala
并选择New => Package -
命名包
example
,然后单击“ 确定”。 -
右键单击该包,
example
然后选择New => Scala class。 -
命名该类
Main
并将Kind更改为object
。 - 将类中的代码更改为以下内容:
object Main extends App {
val ages = Seq(42, 75, 29, 64)
println(s"The oldest person is ${ages.max}")
}
注意:IntelliJ有自己的Scala编译器实现,有时你的代码是正确的,即使IntelliJ指示不正确。您始终可以检查sbt是否可以在命令行上运行您的项目。
运行项目
- 从“ 运行”菜单中,选择“ 编辑配置”
- 单击+按钮,然后选择SBT任务。
-
说出来
Run the program
。 -
在“ 任务”字段中,键入
~run
。~
当您将更改保存到项目中的文件时,导致SBT重建并重新运行项目。 - 单击确定。
- 在运行菜单上。单击“运行”“运行程序”。
-
在代码中,更改
75
为61
并在控制台中查看更新的输出。
添加依赖项
稍微改变一下,让我们来看看如何使用已发布的库为我们的应用程序添加额外的功能。
-
打开
build.sbt
并添加以下行:
libraryDependencies += "org.scala-lang.modules" %% "scala-parser-combinators" % "1.1.0"
这里
libraryDependencies
是一组依赖项,通过使用
+=
,我们将scala-parser-combinators依赖项添加到sbt将在启动时获取和获取的依赖项集。现在,在任何Scala文件中,您都可以使用常规导入从scala-parser-combinator导入类,对象等。
您可以在Scaladex(Scala库索引)上找到更多已发布的库 ,您还可以在其中复制上述依赖关系信息以粘贴到您的
build.sbt
文件中。
使用ScalaTest在IntelliJ中测试Scala
建立
-
在IntelliJ中创建一个sbt项目。
-
添加ScalaTest依赖项:
-
将ScalaTest依赖项添加到您的
build.sbt
文件:
libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.5" % "test"
-
如果您收到“build.sbt已更改”的通知,请选择自动导入。
-
这两个操作将导致
sbt
下载ScalaTest库。
-
等待
sbt
同步完成; 否则,
FunSuite
而且
test()
将是无法识别的。
-
在左侧的项目窗格中,展开
src
=>
main
。
-
右键单击
scala
并选择New => Scala class。
-
调用它
CubeCalculator
,将Kind更改为
object
,然后单击OK。
-
用以下代码替换代码:
object CubeCalculator extends App {
def cube(x: Int) = {
x * x * x
}
}
创建测试
-
在左侧的项目窗格中,展开
src
=>
test
。
-
右键单击
scala
并选择New => Scala class。
-
命名该类
CubeCalculatorTest
,然后单击“ 确定”。
-
用以下代码替换代码:
import org.scalatest.FunSuite
class CubeCalculatorTest extends FunSuite {
test("CubeCalculator.cube") {
assert(CubeCalculator.cube(3) === 27)
}
}
-
在源代码中,右键单击
CubeCalculatorTest
并选择Run'CubeCalculatorTest'。
理解代码
-
将ScalaTest依赖项添加到您的
build.sbt
文件:libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.5" % "test"
- 如果您收到“build.sbt已更改”的通知,请选择自动导入。
-
这两个操作将导致
sbt
下载ScalaTest库。 -
等待
sbt
同步完成; 否则,FunSuite
而且test()
将是无法识别的。
src
=>
main
。
scala
并选择New => Scala class。
CubeCalculator
,将Kind更改为
object
,然后单击OK。
object CubeCalculator extends App {
def cube(x: Int) = {
x * x * x
}
}
src
=>
test
。
scala
并选择New => Scala class。
CubeCalculatorTest
,然后单击“ 确定”。
import org.scalatest.FunSuite class CubeCalculatorTest extends FunSuite {
test("CubeCalculator.cube") {
assert(CubeCalculator.cube(3) === 27)
}
}
CubeCalculatorTest
并选择Run'CubeCalculatorTest'。
让我们逐行说明:
-
class CubeCalculatorTest
意味着我们正在测试对象CubeCalculator
-
extends FunSuite
让我们使用ScalaTest的FunSuite类的test
功能,例如函数 -
test
是来自FunSuite库的函数,它从函数体中收集断言的结果。 -
"CubeCalculator.cube"
是测试的名称。除了一个约定是“ClassName.methodName”之外,你可以调用它。 -
assert
采用布尔条件并确定测试是通过还是失败。 -
CubeCalculator.cube(3) === 27
检查cube
函数的输出是否确实是27.它===
是ScalaTest的一部分并提供干净的错误消息。
添加另一个测试用例
-
assert
在第一个检查多维数据集的语句之后添加另一个语句
0
。
-
右键单击
CubeCalculatorTest
并选择“Run CubeCalculatorTest ” 再次重新运行测试。
assert
在第一个检查多维数据集的语句之后添加另一个语句
0
。
CubeCalculatorTest
并选择“Run CubeCalculatorTest ” 再次重新运行测试。