深入理解Scala核心指导规则教程.docVIP

  • 1
  • 0
  • 约4.73千字
  • 约 7页
  • 2020-11-07 发布于江苏
  • 举报
Read Eval Print Loop (REPL) REPL在Scala里面指是直接运行scala.exe进入交互式命令行模式。广义上讲,也泛指那些在线编程工具。 关键规则1:请使用REPL来熟悉Scala语言。 ScalaREPL有个好处是能够将我们输入每行代码内部表示反馈出来。比如: scala def add(a:Int, b:Int):Int = a + b add: (a: Int, b: Int)Int 我们定义一个函数,完成两个数加法。Scala回显给我们内容能够帮助我们写代码。 表示式和语句 表示式和语句区分是:语句是用来实施,而表示式是用来求值。在程序员世界里,表示式就是返回值,语言就是没有返回值实施程序。 Scala是表示式导向编程语言。但并不是100%成立,Scala代码中还是有控制语块,毕竟我们写程序就是为了控制多种实体为我们服务。 关键规则2:使用表示式,而不是语句。 这条规则关键是帮助我们简化代码,就像前面加法例子,a+b就是一个表示式。相比于我们C语言写相同实现,简单不好。代码里面,像这么例子肯定还是存在很多。 不要使用Return 当我们使用表示式时候,就不需要Return了。因为表示式本身就是用来求值,我们必需再去显式地说我现在要返回什么。Scala编译器自动使用最终一个表示式返回值作为函数返回值。 我们应该记得一个编程指导意见就是函数在同一个地方返回。假如我们现在没有Return语句了,像在Scala中,有没有类似编程指导呢?看个例子: object NoReturn extends scala.App { def createErrorMessage1(errorCode : Int) : String = { val result = errorCode match { case 1 = Network Failure case 2 = I/O Failure case 3 = Unknown Error } return result } def createErrorMessage2(errorCode: Int) : String = { var result : String = null // not val errorCode match { case 1 = result = Network Failure case 2 = result = I/O Failure case _ = result = Unknown Error } return result; } def createErrorMessage3(errorCode : Int) : String = { errorCode match { case 1 = Network Failure case 2 = I/O Failure case 3 = Unknown Error } } println(createErrorMessage1(1)) println(createErrorMessage2(2)) println(createErrorMessage3(3)) println(1 match{case 1 = Network Failure case 2 = 3}) println(2 match{case 1 = Network Failure case 2 = 3}) } createErrorMessage2应该是我们以往写法。定义一个局部变量,然后匹配errorCode,对其进行赋值。createErrorMessage1是Scala推荐写法(即使还不够简练),它使用是val而不是var,来申明临时变量。val表示值,赋值后就不许可再更改;var是变量,能够反复赋值。createErrorMessage1result以后是一个表示式。求值以后直接就赋值了。createErrorMessage3就愈加简练了,差不多到了终极形态了。函数直接就返回一个表示式,少了临时对象。 注:match case支持每个分支返回类型不一样。这个特征在函数式编程中很有用。 Scala即使支持全部3中写法,不过推荐最终一个。因为它帮助简化了代码复杂度,增加了程序不可变性。不可变指是程序在实施过程中,全部

文档评论(0)

1亿VIP精品文档

相关文档