本节主要内容
- REPL命令行高级使用
- 使用Scala进行Linux脚本编程
- 结束语
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