小编Jul*_*ang的帖子

“()”代表什么:val f = {()=> x + = 1}

我的问题是关于Scala函数:

var x = 1
val f = {() => x += 1}
Run Code Online (Sandbox Code Playgroud)

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

val f = (x:Int)=>x+1
Run Code Online (Sandbox Code Playgroud)

但到底是什么()立场的:

val f = {() => x += 1}
Run Code Online (Sandbox Code Playgroud)

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

scala

2
推荐指数
2
解决办法
111
查看次数

foreach(println)和foreach(println())有什么区别?

我有一个字符串数组:

val str:Array[String] = Array("aa","bb")
scala> str.foreach(println) // works
aa
bb
scala> str.foreach(println()) // println() also returns a Unit, doesn't it?
                          ^
error: type mismatch;
found   : Unit
required: String => ?
Run Code Online (Sandbox Code Playgroud)

为什么str.foreach(println)没有问题,但没有问题str.foreach(println())
println等于println()哪个返回Unit值?

scala eta-expansion

2
推荐指数
1
解决办法
81
查看次数

为什么在编译时,伴侣对象可以在其伴侣类中访问私有val,而在解释时却不能这样做?

// Script A.scala
class A {
    private val privateVal = 1
}
object A extends App{ 
    println(new A().privateVal)
}
Run Code Online (Sandbox Code Playgroud)

A.scala可以编译和运行,因为伴侣对象及其类可以访问彼此的私有成员,因此不会出现问题。

$ scalac A.scala
$ scala A
1
Run Code Online (Sandbox Code Playgroud)

为什么在解释时相同的代码会显示伴随对象无法访问其伴随类中的私有val?

$ scala A.scala
error: value privateVal in class A cannot be accessed in A
Run Code Online (Sandbox Code Playgroud)

scala read-eval-print-loop companion-object

1
推荐指数
1
解决办法
67
查看次数