page contents

call-by-value和call-by-name求值策略的区别?

轩辕小不懂 发布于 2021-09-06 14:21
阅读 622
收藏 0
分类:资源下载
1861
Nen
Nen
- 程序员

1)call-by-value是在调用函数之前计算;

(2) call-by-name是在需要时计算


示例代码

//声明第一个函数

def func(): Int = {

  println("computing stuff....")

  42 // return something

}

//声明第二个函数,scala默认的求值就是call-by-value

def callByValue(x: Int) = {

  println("1st x: " + x)

  println("2nd x: " + x)

}

//声明第三个函数,用=>表示call-by-name求值

def callByName(x: => Int) = {

  println("1st x: " + x)

  println("2nd x: " + x)

}

//开始调用

//call-by-value求值

callByValue(func())   

//输出结果

//computing stuff....  

//1st x: 42  

//2nd x: 42

//call-by-name求值

callByName(func())   

//输出结果

//computing stuff....  

//1st x: 42  

//computing stuff....

//2nd x: 42

请先 登录 后评论