`
猫耳呀
  • 浏览: 165690 次
社区版块
存档分类
最新评论

Scala入门到精通——第三十节 Scala脚本编程与结束语

 
阅读更多

摘要: 本节主要内容 REPL命令行高级使用 使用Scala进行Linux脚本编程 结束语 1. REPL命令行高级使用 在使用REPL命令行时,有时候我们需要粘贴的代码比较大,而普通的粘贴可能会些一些问题,比如中文粘贴会出现乱码、多行代码粘贴时会出错,此时需要用到REPL的高级功能。在日常开发过程中,我们粘贴多行代码的时候会遇到下列问题: //本意是要粘贴下面两行代码

本节主要内容

  1. REPL命令行高级使用
  2. 使用Scala进行Linux脚本编程
  3. 结束语

1. REPL命令行高级使用

在使用REPL命令行时,有时候我们需要粘贴的代码比较大,而普通的粘贴可能会些一些问题,比如中文粘贴会出现乱码、多行代码粘贴时会出错,此时需要用到REPL的高级功能。在日常开发过程中,我们粘贴多行代码的时候会遇到下列问题:

而对于一些长串跨行的代码,可能会出现报错,例如:

那要怎么办呢?在REPL命令行中执行下列命令:

先输入:paste,然后按ctr+v键,可以正常粘贴内容,中文也不会出现乱码了:

另外,在实际开发过程中,有些人会认为这种处理方式非常繁琐,Scala的创建者也为我们考虑过这个问题了,我们也可以在scala IDE for eclipse (在Intellij IDEA 中也有这个功能) 里面利用REPL命令行,使用方式是创建scala worksheet,创建方式如下: 

1 点击相应的包,然后右键,在new菜单中选择 scala worksheet 

2 在文件中输入相应的scala语句,worksheet会自动打印出相应的结果 

但是worksheet对中文的支持很不友好,例如下面的代码:

worksheet最终得到的中文是乱码,因此在实际进行语言特性测试的时候尽量避免中文

scala中还有很多我们实际中没有接触过的命令,可以用 :help命令查看REPL现在支持的所有命令:

2. 使用Scala进行Linux脚本编程

本节Linux脚本内容大部分来源于scala cookbook,部分经过本人修改以在Ubuntu Linux上进行演示。

我们在第一节中提到,Scala不仅仅可以进行大规模分布式应用程序开发(例如Spark内存计算框架),也可以进行服务器端脚本编程即它可以替代Linux中的shell (Bourne Shell, Bash)或其它如 Perl, PHP, Ruby等可用于服务器端脚本编程的语言。下面给出的是一个简单示例(前提是要有linux操作系统,本节所有示例都是在ubuntu Linux下运行的):

将上面的内容保存为hello.sh文件,然后用下列命令增加其执行权限:

可以看到我们第一个服务器脚本已经运行成功。前面的代码中,#!符号表示的是Unix shell脚本的开始,它会调用Unix Bourne shell。exce命令是内置的shell,表示需要执行scala 命令,其中0绑定的是hello.sh脚本名称,@ 绑定的是我们输入的参数。!#表示脚本声明头部的结束。在脚本中可以使用任何的scala语法,例如:

上述代码执行结果:

除此之外,我们还可以定义应用程序对象,可以扩展自App,也可以实现自己的Main方法,例如:

下面给出的是不带参数的执行结果:

下面给出的是带参数的执行结果,如:

当然,还可以实现自己的main方法,如:

同extends App是一样的。

如果脚本中需要应用到第三方库的话,可以采用下列方式进行包引入:

通过上述代码不难发现,脚本编程与一般的Scala应用程序开发有着非常多的相似之处,不同之处仅在于在脚本编程需要加入下面这样的样板代码

有时候,我们也需要对命令行参数进行捕获(例如判断命令行的个数或输入的参数类型等),然后进行相应的操作,前面已经演示了如何打印输出命令行参数,这里我们更多实际中可能会遇到的一些经典案例: 
1 判断输入参数的个数,不满足要求则给出提示

执行结果如下:

2 交互式命令行,提示用户输入

下面给出的是其执行结果:

3 加速代码的执行: 
scala脚本在执行的过程中,也是通过编译、执行的步骤来进行的,有时候为加速脚本的执行,意图是将编译后的脚本保存下来,在执行时候如果脚本创建之后没有发生变化的话,则直接使用以前编译好的脚本。实现方式是在脚本声明的时候用-savecompiled。

它的原理是在代码第一次执行后,生成相应的jar文件,当下次再执行的便调用该jar文件来执行,第一次执行后生成的jar文件如下: 

3. 结束语

本节内容是scala入门到精通系列课程的最后一节,通过本课程,我相信可以让大家成为一个中级scala语言开发者。Scala语言功能非常强大,其中内容还有很多,还有许多内容我们没有涉及,例如scala 的GUI编程、Scala的定界延续等,但这些功能在实际开发中应用的并不是特别广泛,特别是Scala GUI编程,我们知道java在GUI编程方面并不是它的强项,scala语言也是如此。这门课程的目的是让大家学完之后能够快速上手spark应用程序开发,希望在学完本课程之后,大家将这门课作为自己学习scala的起点,而非终点。

原文链接

分享到:
评论

相关推荐

    SCALA从入门到精通个人笔记含代码

    Scala简介&快速入门 基础语法 变量 数据类型 流程控制 操作符重载 模式匹配 函数式编程基础 函数式编程说明 函数定义/声明 函数运行机制 递归 函数注意事项和细节 过程 惰性函数和异常 面向对象编程初级...

    Scala编程语言从入门到精通

    资源名称:Scala编程语言从入门到精通资源目录:【】DesignOfScala【】ExcitedScala_7(1)【】lift-lift_23_sbt-cf313e1【】ScalaTutorial-zh_CN【】Scala_2.7.6_API【】Scala向导(前13章)【】Scala向导(前15章)-p...

    Scala编程语言详解(从入门到精通)spark

    #### 三、Scala的安装与配置 - **安装 Scala**:访问官方网站 [http://www.scala-lang.org/](http://www.scala-lang.org/) 下载最新版本的 Scala。推荐使用 JDK 1.8 或更高版本作为运行环境。 - **安装 SBT**:虽然...

    scala从入门到精通技术教学视频

    第三章 运算符 001.导学 01.算术运算符 02.赋值运算符 03.关系运算符 04.逻辑运算符 05.进制和8421码 06.原反补码计算规则 07.位运算符 08.案例_交换变量值 第四章 流程控制结构 00.导学 01.流程控制结构之顺序结构...

    资料-scala入门到精通.zip

    这份“资料-scala入门到精通.zip”压缩包显然是为初学者和有一定经验的开发者设计的,旨在帮助他们全面理解和掌握Scala语言。 Scala的基础知识包括: 1. **语法特性**:Scala的语法简洁而富有表现力,它引入了...

    Spark技术实战之基础篇 -Scala语言从入门到精通 Scala编程详解 含课件和资料 共21个章节.rar

    【课程大纲】第1讲-Spark的前世今生第2讲-课程介绍、特色与价值第3讲-Scala编程:基础语法第4讲-Scala编程:条件控制与循环第5讲-Scala编程:函数入门第6讲-Scala编程:函数入门之默认参数和带名参数第7讲-Scala编程...

    IDEA集成scala(csdn)————程序.pdf

    **IDEA集成Scala编程环境详解** 在现代软件开发中,IntelliJ IDEA作为一款强大的Java集成开发环境(IDE),也提供了对Scala语言的完美支持。本文将详细介绍如何在IntelliJ IDEA中集成Scala开发环境,以便高效地进行...

    邮电学院Scala大数据实时处理——基于Lambda架构的Spark源码

    项目概述:邮电学院Scala大数据实时处理——基于Lambda架构的Spark源码实践 本项目为邮电学院假期师资培训的成果,主要采用Scala语言开发,围绕Lambda架构构建了一套实时数据流处理系统。项目包含35个文件,其中...

    scala入门(仅供参考)

    Scala是一种多范式的编程语言,设计目标是融合面向对象编程和函数式编程的特性,它在Java虚拟机(JVM)上运行,因此可以无缝地与Java代码交互。本篇文章主要面向有一定Java开发经验的程序员,旨在帮助他们入门Scala。 ...

    scala编程入门教材

    Scala编程入门教材旨在引导初学者踏入Scala这一强大且多用途的编程语言的世界。Scala结合了面向对象编程(OOP)和函数式编程(FP)的特性,为开发者提供了丰富的工具来构建高效、可扩展的软件系统。以下是Scala编程...

    Scala函数式编程

    基于 Scheme、Haskell 等老牌函数式语言的传统教材的问题在于,相关语言的语法和思维方式与读者现有的知识体系迥异,容易造成较为陡峭的入门门槛。此外,由于这些语言本身的实际应用机会不多,初学者也难以在实战中...

Global site tag (gtag.js) - Google Analytics