Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 访问类中IF子句中定义的值_Scala_Class - Fatal编程技术网

Scala 访问类中IF子句中定义的值

Scala 访问类中IF子句中定义的值,scala,class,Scala,Class,我定义了这样一个类 class foo { var a = false private def fooFunc() = { a = true "AAAA" } if (!a) { val d = fooFunc() } } 我将其实例化为 val myFoo = new foo 确实执行了fooFunc函数,但我无法访问d。你有什么建议吗 多谢各位 您无法访问d,因为它是在if块的范围内定义的,而不是在类本身的范围内 换一个怎么样 if(!a){val d=f

我定义了这样一个类

class foo {
  var a = false
  private def fooFunc() = {
    a = true
    "AAAA"
  }
  if (!a) { val d = fooFunc() }
}
我将其实例化为

val myFoo = new foo
确实执行了fooFunc函数,但我无法访问d。你有什么建议吗


多谢各位

您无法访问
d
,因为它是在
if
块的范围内定义的,而不是在类本身的范围内

换一个怎么样

if(!a){val d=fooFunc()}


lazy val d=if(!a)Some(fooFunc())else None

foo
中将其设置为
lazy val
,并忘记
a
。更一般地说,忘记
var
(除了在Akka Actors中)。
d
仅存在于条件表达式的范围内