jinfeng_wang

          G-G-S,D-D-U!

          BlogJava 首頁 新隨筆 聯系 聚合 管理
            400 Posts :: 0 Stories :: 296 Comments :: 0 Trackbacks
          http://www.runoob.com/scala/functions-call-by-name.html


          Scala的解釋器在解析函數參數(function arguments)時有兩種方式:

          • 傳值調用(call-by-value):先計算參數表達式的值,再應用到函數內部;
          • 傳名調用(call-by-name):將未計算的參數表達式直接應用到函數內部

          在進入函數內部前,傳值調用方式就已經將參數表達式的值計算完畢,而傳名調用是在函數內部進行參數表達式的值計算的。

          這就造成了一種現象,每次使用傳名調用時,解釋器都會計算一次表達式的值。

          object Test { def main(args: Array[String]) { delayed(time()); } def time() = { println("獲取時間,單位為納秒") System.nanoTime } def delayed( t: => Long ) = { println("在 delayed 方法內") println("參數: " + t) t } }

          以上實例中我們聲明了 delayed 方法, 該方法在變量名和變量類型使用 => 符號來設置傳名調用。執行以上代碼,輸出結果如下:

          $ scalac Test.scala $ scala Test  delayed 方法內 獲取時間,單位為納秒 參數: 241550840475831 獲取時間,單位為納秒

          實例中 delay 方法打印了一條信息表示進入了該方法,接著 delay 方法打印接收到的值,最后再返回 t。

          posted on 2016-12-16 11:42 jinfeng_wang 閱讀(301) 評論(0)  編輯  收藏 所屬分類: 2016SCALA

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 屯门区| 雅江县| 永善县| 渝中区| 门源| 饶阳县| 文成县| 东明县| 玉林市| 西乡县| 汝南县| 德安县| 镇赉县| 和平区| 通山县| 门头沟区| 高密市| 精河县| 满洲里市| 独山县| 育儿| 潜山县| 新郑市| 河源市| 崇州市| 盈江县| 潞西市| 合水县| 礼泉县| 南溪县| 宣威市| 桂阳县| 三门峡市| 广州市| 杭州市| 怀柔区| 信宜市| 安溪县| 九龙城区| 龙里县| 武川县|