• Scala程序编译运行


    Scala 解释器

    开始Scala最简单的方法是使用Scala解释器,它是一个编写Scala表达式和程序的交互式“shell”。简单地在解释器里输入一个表达式,它将计算这个表达式并打印结果值。Scala的交互式shell就叫做scala。你可以在命令提示符里输入scala使用它:

    示例:

    C:Users4cv748wpd3>scala
    Welcome to Scala 2.12.6 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_111).
    Type in expressions for evaluation. Or try :help.
    
    scala> 1+2
    res0: Int = 3
    
    scala>

    说明:

    • 一个自动产生的或用户定义的名称说明计算的值(res0,表示结果 0),
    • 一个冒号(:),跟着表达式的类型(Int)
    • 一个等号(=)
    • 计算表达式所得到的结果(3)。

    Int类型指代了scala包的类Int。Scala里的包与Java里的包很相似:它们把全局命名空间分区并提供了信息隐藏的机制。类Int的值对应着Java的int值。更广泛意义上来说,所有的Java原始类型在scala包里都有对应的类。例如,scala.Boolean对应着Java的boolean。scala.Float对应着Java的float。当你把你的Scala代码编译成Java字节码,Scala编译器将使用Java的原始类型以便获得其带来的性能益处。

    resX 识别符还将用在后续的代码行中。例如,既然 res0 已在之前设为 3,res0 * 3 就是9:

    scala> res0 * 3
    res1: Int = 9
    
    scala>

    打印必要的,却不仅此而已的,Hello, world! 贺词,输入:

    scala> println("Hello,world!")
    Hello,world!
    
    scala>

    println函数在标准输出上打印传给它的字串,就跟 Java里的System.out.println一样。

    1.编译

    Scala演示代码如下:

    1.  
      <pre name="code" class="plain">/**
    2.  
      * @author Administrator
    3.  
      */
    4.  
      object Maps {
    5.  
       
    6.  
      val colors = Map("red" -> 0xFF0000,
    7.  
      "turquoise" -> 0x00FFFF,
    8.  
      "black" -> 0x000000,
    9.  
      "orange" -> 0xFF8040,
    10.  
      "brown" -> 0x804000)
    11.  
       
    12.  
      def main(args: Array[String]){
    13.  
      for(name <- args)println(
    14.  
      colors.get(name) match{
    15.  
      case Some(code) =>
    16.  
      name + " has code: " + code
    17.  
      case None =>
    18.  
      "Unknown color: " + name
    19.  
      })
    20.  
      }
    21.  
      }
    
    

    1.1方式一scalac

    使用Scala的基本编译器——scalac。开始编译源文件,但在编译完成之前会有几秒的停顿。因为每次编译器启动时,都要花一些时间扫描jar文件内容,并且在开始编译提交的源文件之前完成更多其他初始化工作(因此可能比Java程序编译慢)。命令如下:

    scalac -d class/ Maps.scala

    1.2方式二fsc

    Scala的发布包里还包括了一个叫做fsc(快速Scala编译器,Fast Scala Compiler)的Scala编译器后台服务(daemon)。估计是针对Scala程序编译慢才刻意提供的服务。使用方法如下(其实用法和scalac差不多):

    fsc -d class/ Maps.scala

    第一次执行fsc时,会创建一个绑定在计算机端口上的本地服务器后台进程。然后它就会把文件列表通过端口发送给后台进程,由后台进程编译。下一次执行fsc时,检测到后台进程已经在运行了,于是fsc将只把文件列表发给后台进程,它会立刻开始编译文件。使用fsc,只须在首次运行的时候等待Java运行时环境的启动。如果想停止fsc后台进程,可以执行命令:

    fsc -shutdown

    2.打包

    打包过程和Java程序打包没什么两样,这里不做累述,仅给出命令行如下:

    jar -cvf maps.jar -C class/ .

    3.运行

    3.1方式一java

    使用java方式运行打包好的Scala程序有一个地方特别需要注意。这里,先看按Java程序的方式,不做任何处理运行Scala,命令行如下:

    java -cp maps.jar Maps red blue black orange

    运行结果如下图所示:

    报错提示Scala中的方法没有找到,为什么没有找到?这里先声明:该程序在Eclipse for Scala(IDE)上运行是没问题的,所以问题可能出在Scala的jar包没有引入,那么用-D参数引入jar包,命令行如下:

    java -Djava.ext.dirs=$SCALA_CP -cp maps.jar Maps red blue black orange

    (注:SCALA_CP=$SCALA_HOME/lib)

    运行结果如下图所示:

     

    3.2方式二scala

    其实可以直接使用scala命令来运行的,不要以为scala命令只能开启Scala命令行模式,闲言少叙,直接看命令行:

    scala -cp maps.jar Maps red blue black orange

    运行结果如下图所示:

    4.总结

     如果多次编译Scala程序建议使用fsc(每一种事物的存在都有它道理的),如果只须编译一次Scala程序,就用scalac吧,毕竟fsc用完记得关闭;
     运行Scala程序建议使用scala命令,不建议用java命令。

  • 相关阅读:
    nodejs内存控制
    nodejs的Buffer解析
    基于Yeoman实现自定义脚手架
    基于node实现一个简单的脚手架工具(node控制台交互项目)
    nodeJs入门的第一节课
    手动封装一个node命令集工具
    [转载] 如何掌握所有的程序语言 —— 王垠
    Kubernetes:服务与负载均衡
    Zabbix 6.0:原生高可用(HA)方案部署
    Kubernetes:健康检查
  • 原文地址:https://www.cnblogs.com/duanxz/p/3228054.html
Copyright © 2020-2023  润新知