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

本文介绍了Scala的REPL命令行高级使用,如如何粘贴多行代码和解决中文乱码问题。此外,还展示了如何使用Scala进行Linux脚本编程,包括脚本的基本结构、命令行参数处理和包引入。文章最后总结了Scala入门到精通系列课程,鼓励读者继续深入学习Scala和Spark。
摘要由CSDN通过智能技术生成

本节主要内容

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

1. REPL命令行高级使用

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

//本意是要粘贴下面两行代码
class Person(val name:String,val age:Int)
val p=new Person("摇摆少年梦",27)

//直接在REPL命令行粘贴的话,会出现下面情况
//1 不会一次性粘入,而是分作两行
//2 中文出现乱码
scala> class Person(val name:String,val age:Int)
defined class Person

scala> val p=new Person("??????????",27)
p: Person = Person@cf528

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

//本意是要粘贴下面的代码
if(p.age>10) 
    true
  else
    false

//但实际情况是这样的   
scala> if(p.age>10)
     |     true
res0: AnyVal = true

scala>   else
<console>:1: error: illegal start of definition
         else
         ^

scala>     false

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

scala> :paste
// Entering paste mode (ctrl-D to finish)

if(p.age>10)
    true
  else
    false

// Exiting paste mode, now interpreting.

res3: Boolean = true

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

scala> :paste
// Entering paste mode (ctrl-D to finish)

class Person(val name:String,val age:Int)
val p=new Person("摇摆少年梦",27)

// Exiting paste mode, now interpreting.

defined class Person
p: Person = Person@1924b38

另外,在实际开发过程中,有些人会认为这种处理方式非常繁琐,Scala的创建者也为我们考虑过这个问题了,我们也可以在scala IDE for eclipse (在Intellij IDEA 中也有这个功能) 里面利用REPL命令行,使用方式是创建scala worksheet,创建方式如下:
1 点击相应的包,然后右键,在new菜单中选择 scala worksheet
这里写图片描述

2 在文件中输入相应的scala语句,worksheet会自动打印出相应的结果
这里写图片描述

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

case class Person(val name:String,val age:Int)

object ScalaREPL {
   
  println("Scala worksheet")                      //> Scala worksheet
  val p=new Person("摇摆少年梦",27)                    //> p  : cn.scala.xtwy.jdbc.Person = Person(鎽囨憜灏戝勾姊�27)
}

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

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

scala> :help
All commands can be abbreviated, e.g. :he instead of :help.
Those marked with a * have more detailed help, e.g. :help imports.

:cp <path>                 add a jar or directory to the classpath
:help [command]            print this summary or command-specific help
:history [num]             show the history (optional
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值