亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

Scala菜鳥的進階之路之控制結構和函數(三)

標簽:
Spark

高级for循环和for推导式

1、变量<-表达式 的形式提供多个生成器,用分号将他们隔开

webp

2、每个生成器都可以带一个守卫,以if开头的Boolean表达式


webp

if 之前没有分号

3、你可以使用任意多的定义,引人可以在循环中使用的变量:


webp

4、如果for循环的循环体以yield开始,则该循环会构造出一个集合,每次迭代生成集合中的一个值:


webp


这类循环叫做for推导式

5、for推导式生成的集合与它的第一个生成器是类型兼容的


webp

6、在Scala中,你也可以将生成器、守卫和定义包含再花括号中,并可以以换行的方式而不是分号隔开它们

  

webp

函数


1、Scala中除了方法还支持函数。要定义函数,要给出函数的名称、参数和函数体,例如:


webp


必须给出所有参数的类型。不过只要函数不是递归的,就不需要指定返回类型。Scala编译器可以通过 = 符号右侧的表达式的类型推断返回类型。

      2、如果函数体需要多个表达式完成,可以用代码块。块中最后一个表达式的值就是函数的返回值。

举个例子:


webp

这个函数返回位于for循环之后的r的值。在本例中并不需要用到return,我们可以像Java或C++那样使用return,来立即从某个函数退出,不过在Scala中这种做法并不常见。


3、虽然在带名函数中使用 return 并没有什么不对,但是再匿名函数中却不同。匿名函数中的 return 并不反回值给调用者。它跳出到包含它的带名函数中。可以把 return 当作函数版本的 break 语句,仅在需要时使用。

4、对于递归函数,我们必须指定返回类型。举个例子:

webp

如果没有返回类型,Scala编译器无法校验
n * fac(n - 1)的类型是 Int



作者:独行者独行者
链接:https://www.jianshu.com/p/96c3e28c99ae


點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消