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

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


          網站導航:
           
          主站蜘蛛池模板: 象山县| 嫩江县| 武威市| 吴江市| 龙门县| 浦县| 大新县| 介休市| 彩票| 乐安县| 沾化县| 遂川县| 宜黄县| 阜城县| 祥云县| 平泉县| 沙河市| 承德市| 古丈县| 清丰县| 望都县| 会理县| 乌拉特中旗| 滨州市| 澄迈县| 任丘市| 海宁市| 普宁市| 邯郸县| 林口县| 察雅县| 化隆| 江源县| 蕲春县| 客服| 射洪县| 湘阴县| 宜都市| 高要市| 宜城市| 天长市|