Scala允许用户在函数中定义函数。这称为嵌套函数,其中内部函数称为局部函数。以下代码表示嵌套的函数。
def bookAssignAndDisplay(bookId:Int,bookname:String) = {
def getBookDetails(bookId:Int,bookName:String):String = {
s" bookId是${bookId},书名是${bookName}"
}
def display{
println(getBookDetails(bookId,bookName))
}
display
}
bookAssignAndDisplay(101,"Spark大数据处理技术")
这里,在函数bookAssignAndDisplay中定义了两个内部函数,getBookDetails和display。
以下代码显示了外部函数变量的作用域。
def outerFunction(){
var outerVariable ="Out"
def innerFunction(){
println(s"outerVariable变量的值是: $outerVariable") // 可以访问外部函数中声明的变量
}
innerFunction()
}
outerFunction()
以下代码显示了内部函数变量的作用域:
def outerFunction(){
var outerVariable = "Out"
def innerFunction(){
var innerVariable ="In"
println(s"outerVariable变量的值是:$outerVariable") // 可以访问外部函数中声明的变量
}
innerFunction()
println(s"innerVariable变量的值是:$innerVariable") // 出错:不可以访问内部函数中声明的变量
}
由以上两个示例的代码可知,外部函数中声明的变量可以在内部函数中访问,但是内部函数中声明的变量在外部函数中没有作用域。
下面是定义和调用一个嵌套函数的示例。
object demo {
def checkAvailabilityWithNestedFunction(pName: String): Boolean = {
// 检索当前库存的商品列表
val listFromStock = List[String]("电脑", "打印机", "办公椅", "饮水机")
// v通过业务逻辑验证donutName参数
val validate = (name: String) => {
name.nonEmpty && name.length > 0
}
// 首先运行validate,然后检查列表中是否有匹配的商品
val isInStock = validate(pName) && (listFromStock contains pName)
isInStock
}
def main(args: Array[String]): Unit = {
println(s"验证结果 = ${checkAvailabilityWithNestedFunction("办公椅")}")
println(s"验证结果 = ${checkAvailabilityWithNestedFunction("汽车")}")
}
}
执行以上代码,输出结果如下所示:
验证结果 = true
验证结果 = false
© 版权声明
本站网络名称:
知趣
本站永久网址:
https://www.qubaa.top
网站侵权说明:
本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长删除处理。
1 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
2 本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
3 本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新。
1 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
2 本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
3 本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新。
THE END
暂无评论内容