code

2016年10月21日 星期五

Scala 筆記4 - Lexical Scope

Nested Functions and Blocks

Scala支援nested function語法,這樣有較好的encapsulation。nested functions須要放入某個block中,block是一個由{ } 包圍住的expression,所以可以作為一個function body,因為expression一定要return value。

以下是利用Scala來實作牛頓法逼近平方根:



上圖中block內的functions會遮蔽block外的同名functions,相當於宣告一個local function,其scope範圍與一般local variables一樣。

所以上圖的實作可以把裡面nested functions的x parameter去掉,因為所有的nested functions都在最外層x的lexical scope內:


如此就乾淨多了。












沒有留言:

張貼留言