- 1、本文档共5页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
(深入理解Scala核心规则教程
Read Eval Print Loop (REPL)
REPL在Scala里面指的是直接运行scala.exe进入的交互式命令行模式。广义上讲,也泛指那些在线编程工具。
核心规则1:请使用REPL来熟悉Scala语言。
Scala的REPL有个好处是能够将我们输入的每行代码的内部表示反馈出来。比如:
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是变量,可以重复赋值。createErrorMessage1的的result之后是一个表达式。求值之后直接就赋值了。createErrorMessage3就更加简洁了,差不多到了终极形态了。函数直接就返回一个表达式,少了临时对象。
注:match case支持每个分支返回的类型不同。这个特性在函数式编程中非常有用。
Sca
您可能关注的文档
- 《马克思主义基本原理概论WORD文档2.doc
- (消防安全资料.doc
- (消防安全重点单位基本情况档案.doc
- 《马克思主义基本原理概论》课后习题答案2010年修订版.doc
- 《马克思主义基本原理概论三.docx
- (消防工程师和建构筑消防员条件.doc
- (消防工程施工合同.doc
- (消防报警及联动控制系统的安装及维护.doc
- (消防施工质量目标交底.doc
- (消防现场演示项目设置参考.doc
- 【精品】人教版小学语文六年级下册期末考卷含参考答案.docx
- 【精品】人教版小学数学五年级下册期中试卷含参考答案.docx
- 【精品】人教版小学数学五年级下册期末试卷含参考答案.docx
- 【精品】北师大版小学英语五年级下册期末试卷含参考答案.docx
- 【精品】北师大版小学科学一年级上册模拟考卷含参考答案.docx
- 【精品】北师大版小学科学一年级下册期末考卷含参考答案.docx
- 【精品】北师大版小学科学三年级下册期末试卷含参考答案.docx
- 【精品】北师大版小学英语六年级上册模拟考卷含参考答案.docx
- 【精品】人教版小学数学五年级下册期末考卷含参考答案.docx
- 【精品】人教版小学数学五年级上册期末考卷含参考答案.docx
文档评论(0)