我的问题是关于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书中的功能一章,但是仍然无法理解()这里的含义。
我有一个字符串数组:
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值?
// 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)