IntelliJ IDE中的Scala入门

创建项目

  1. 打开IntelliJ并单击File => New => Project
  2. 在左侧面板中,选择Scala。在右侧面板中,选择IDEA。
  3. 将项目命名为HelloWorld
  4. 假设这是您第一次使用IntelliJ创建Scala项目,则需要安装Scala SDK。在Scala SDK字段的右侧,单击“ 创建”按钮。
  5. 选择最高版本号(例如2.12.2),然后单击“ 下载”。这可能需要几分钟,但后续项目可以使用相同的SDK。
  6. 创建SDK并返回“新建项目”窗口后,单击“ 完成”。

编写代码

  1. 在左侧的Project窗格中,右键单击src并选择 New => Scala class。
  2. 命名该类Hello并将Kind更改为object。
  3. 将类中的代码更改为以下内容:
object Hello extends App {
println("Hello, World!")
}

运行它

  • 右键单击Hello代码并选择Run'Hello'。
  • 你完成了!

尝试使用Scala

Scala Worksheets是一种尝试代码示例的好方法

  1. 在左侧的项目窗格中,右键单击 src并选择New => Scala Worksheet。
  2. 将新的Scala工作表命名为“Mathematician”。
  3. 在工作表中输入以下代码:
def square(x: Int) = x * x

square(2)

  当您更改代码时,您会注意到它会在右侧窗格中进行评估。

使用IntelliJ和sbt构建Scala项目

创建项目

  1. 如果未从命令行创建项目,请打开IntelliJ并选择“创建新项目”

    • 在左侧面板中,选择Scala,然后在右侧面板上选择SBT
    • 单击下一步
    • 将项目命名为“SBTExampleProject”
  2. 如果已在命令行上创建项目,请打开IntelliJ,选择Import Project并打开项目的build.sbt文件
  3. 确保JDK版本为1.8且SBT版本至少为0.13.13
  4. 选择“ 使用自动导入”,以便在可用时自动下载依赖项
  5. 选择完成

了解目录结构

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代码

  1. 在左侧的“ 项目”面板上,展开SBTExampleProject=> src =>main
  2. 右键单击scala并选择New => Package
  3. 命名包example,然后单击“ 确定”。
  4. 右键单击该包,example然后选择New => Scala class。
  5. 命名该类Main并将Kind更改为object。
  6. 将类中的代码更改为以下内容:
object Main extends App {
val ages = Seq(42, 75, 29, 64)
println(s"The oldest person is ${ages.max}")
}

注意:IntelliJ有自己的Scala编译器实现,有时你的代码是正确的,即使IntelliJ指示不正确。您始终可以检查sbt是否可以在命令行上运行您的项目。

运行项目

  1. 从“ 运行”菜单中,选择“ 编辑配置”
  2. 单击+按钮,然后选择SBT任务。
  3. 说出来Run the program。
  4. 在“ 任务”字段中,键入~run。~当您将更改保存到项目中的文件时,导致SBT重建并重新运行项目。
  5. 单击确定。
  6. 在运行菜单上。单击“运行”“运行程序”。
  7. 在代码中,更改75为61 并在控制台中查看更新的输出。

添加依赖项

稍微改变一下,让我们来看看如何使用已发布的库为我们的应用程序添加额外的功能。

  1. 打开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

建立

  1. 在IntelliJ中创建一个sbt项目。
  2. 添加ScalaTest依赖项:
    1. 将ScalaTest依赖项添加到您的build.sbt文件:

       libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.5" % "test"
    2. 如果您收到“build.sbt已更改”的通知,请选择自动导入。
    3. 这两个操作将导致sbt下载ScalaTest库。
    4. 等待sbt同步完成; 否则,FunSuite而且test()将是无法识别的。
  3. 在左侧的项目窗格中,展开src=> main。
  4. 右键单击scala并选择New => Scala class。
  5. 调用它CubeCalculator,将Kind更改为object,然后单击OK。
  6. 用以下代码替换代码:
    object CubeCalculator extends App {
    def cube(x: Int) = {
    x * x * x
    }
    }

创建测试

  1. 在左侧的项目窗格中,展开src=> test。
  2. 右键单击scala并选择New => Scala class。
  3. 命名该类CubeCalculatorTest,然后单击“ 确定”。
  4. 用以下代码替换代码:
     import org.scalatest.FunSuite
    
     class CubeCalculatorTest extends FunSuite {
    test("CubeCalculator.cube") {
    assert(CubeCalculator.cube(3) === 27)
    }
    }
  5. 在源代码中,右键单击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的一部分并提供干净的错误消息。

添加另一个测试用例

  1. assert在第一个检查多维数据集的语句之后添加另一个语句0。
  2. 右键单击CubeCalculatorTest并选择“Run CubeCalculatorTest ” 再次重新运行测试。

IntelliJ中的Scala入门的更多相关文章

  1. 在Java项目中整合Scala

    Scala是一个运行在Java JVM上的面向对象的语言.它支持函数编程,在语法上比Java更加灵活,同时通过Akka库,Scala支持强大的基于Actor的多线程编程.具有这些优势,使得我最近很想在 ...

  2. IntelliJ IDEA 安装 Scala 插件

    本页面中对在 IntelliJ 中安装 Scala 插件的步骤和方法进行了描述. 需要在 IntelliJ  安装 Scala 插件,你首先需要在你的计算机中安装 IntelliJ .IntelliJ ...

  3. Scala & IntelliJ IDEA环境搭建升级版:在JAVA中调用Scala的helloworld

    --------------------- 前言 --------------------- 项目关系,希望用Spark GraphX做数据分析及图像展示,但前提是得会spark:spark是基于sc ...

  4. Scala入门学习笔记三--数组使用

    前言 本篇主要讲Scala的Array.BufferArray.List,更多教程请参考:Scala教程 本篇知识点概括 若长度固定则使用Array,若长度可能有 变化则使用ArrayBuffer 提 ...

  5. IntelliJ IDEA 开发scala

    1.下载安装IntelliJ IDEA,并安装scala插件 我下载的是linux的13版本,linux版本是绿色版本,有一个启动的脚本,运行就可以了,也可以在linux建立快捷方式.windows的 ...

  6. Scala入门 【1】

    Scala入门 [1] 转载请注明出处:http://www.cnblogs.com/BYRans/ 1 基础 val定义的为常量,var为变量 val name:Type = ***,变量名后加冒号 ...

  7. Scala入门(1)Linux下Scala(2.12.1)安装

    Scala入门(1)Linux下Scala(2.12.1)安装 一.文件准备 1.1 文件名称 scala-2.12.1.tgz 1.2 下载地址 http://www.scala-lang.org/ ...

  8. IntelliJ IDEA安装scala插件并创建scala示例

    1.http://blog.csdn.net/a2011480169/article/details/52712421 2.http://blog.csdn.net/stark_summer/arti ...

  9. 使用Intellij中的Spring Initializr来快速构建Spring Boot/Cloud工程(十五)

    在之前的所有Spring Boot和Spring Cloud相关博文中,都会涉及Spring Boot工程的创建.而创建的方式多种多样,我们可以通过Maven来手工构建或是通过脚手架等方式快速搭建,也 ...

随机推荐

  1. 51NOD:1639-绑鞋带

    传送门:https://www.51nod.com/onlineJudge/submitDetail.html#!judgeId=475129 1639 绑鞋带 基准时间限制:1 秒 空间限制:131 ...

  2. 设计模式之第6章-迭代器模式(Java实现)

    设计模式之第6章-迭代器模式(Java实现) “我已经过时了,就不要讲了吧,现在java自带有迭代器,还有什么好讲的呢?”“虽然已经有了,但是具体细节呢?知道实现机理岂不美哉?”“好吧好吧.”(迭代器 ...

  3. IOS开发---菜鸟学习之路--(三)-数据解析

    第三篇 上一篇我们讲了如何通过NSURL类来获取数据, 这一章我们来讲下对于获取过来的数据如何解析. 好了直接进入正文吧. 正文: 上一篇讲了 我们获取过来的数据格式是JSON格式的 大家可以搜下对应 ...

  4. Robotium测试报告的生成方法(上)

    7.1 使用junit-report生成报告 这个是参考网上的:http://www.xuebuyuan.com/2148574.html,经我个人验证是可行的方法,网上写的挺详细的,不过有些不太清楚 ...

  5. junit4 assert类中的assert方法总结

    junit中的assert方法全部放在Assert类中,总结一下junit类中assert方法的分类. 1.assertTrue/False([String message,]boolean cond ...

  6. 【LoadRunner】对摘要认证的处理

    近期项目中,进行http协议的接口性能测试过程中,需要进行登录接口的摘要认证,分享一下测试经验. 测试准备 测试工具:LoadRunner11 测试类型:接口测试--某系统登录接口 步骤 根据系统接口 ...

  7. 【数据结构与算法】Fibonacci Sequence

    学计算机的对 Fibonacci 都并不陌生,在课堂上一讲到递归几乎都会提到 Fibonacci 数列.不久前,我对 Fibonacci 产生了一些兴趣,就在这里把自己的想法给记录下来. 递推公式: ...

  8. 深入学习之mysql(四)聚合函数

    聚合函数:COUNT统计记录的条数.SUM求和函数.AVG求平均值.MAX求最大值.MIN求最小值   一.COUNT练习: 1.统计学校一共有多少个学生: mysql> SELECT COUN ...

  9. docker log 批量删除报错: find: `/var/lib/docker/containers/': 没有那个文件或目录

    问题描述: 服务器上面docker log太多,打算用之前写的批量清理shell脚本清理掉,但是发现报错. find: `/var/lib/docker/containers/': 没有那个文件或目录 ...

  10. maven学习(九)——maven中的坐标、依赖以及仓库

    一.Maven坐标 1.1.什么是坐标? 在平面几何中坐标(x,y)可以标识平面中唯一的一点. 1.2.Maven坐标主要组成 groupId:组织标识(包名) artifactId:项目名称 ver ...