繁体   English   中英

“()”在以下含义:val f = {()=> x + = 1}

[英]What does “()” stand for in: val f = {() => x += 1}

我的问题是关于Scala函数:

var x = 1
val f = {() => x += 1}

很明显,函数文字是否像这样:

val f = (x:Int)=>x+1

但是()代表什么:

val f = {() => x += 1}

我在Scala中很陌生。 我已经读完了一本Scala书中的功能一章,但仍然无法理解()在这里的含义。

tl; dr这只是一个函数的空参数列表。

这是一个空的参数列表。 这意味着您没有将任何参数传递给该函数。 因此,通常这种函数不会消耗任何值,但是会在调用时提供值。

你的情况很特别。 变量x来自外部作用域并绑定到您的函数,因此它成为闭包。 每次调用f都会改变x的值。

()中的val f = {() => x += 1}表示的函数由1采取x的任何参数,增加值

它类似于

var x = 1
def foo(): Unit = {
    x += 1
}


val f: () => Unit = () => x += 1

这不是一个纯粹的功能

f() => Unit类型。 一个不带参数且不返回任何值的函数(单位)

val f: () => Unit = {() => x += 1}

相当于Java的是Supplier接口。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM