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 閱讀(304) 評論(0)  編輯  收藏 所屬分類: 2016SCALA

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


          網站導航:
          博客園   IT新聞   Chat2DB   C++博客   博問  
           
          主站蜘蛛池模板: 赣榆县| 开封市| 策勒县| 喀喇沁旗| 应城市| 兖州市| 桑植县| 佛坪县| 静安区| 普兰县| 朝阳县| 南陵县| 顺昌县| 云梦县| 衡东县| 楚雄市| 霍邱县| 栖霞市| 扬州市| 张家界市| 景德镇市| 松阳县| 远安县| 济宁市| 汉沽区| 乌拉特后旗| 广西| 博客| 齐河县| 新营市| 高唐县| 凉城县| 江津市| 孝感市| 衡阳市| 阳江市| 石嘴山市| 黎城县| 盐源县| 云龙县| 德清县|