scala:val和def定义变量的区别
先看def p:
object Json4sTest {
def main(args: Array[String]): Unit = {
def p = f
println(p)
println(p)
}
def f() = {
println("function f run...")
"f return"
}
}
/*
输出:
function f run...
f return
function f run...
f return
*/
下面是val p:
object Json4sTest {
def main(args: Array[String]): Unit = {
val p = f
println(p)
println(p)
}
def f() = {
println("function f run...")
"f return"
}
}
/*
输出:
function f run...
f return
f return
*/
总结:
val
声明的变量只会在执行时赋一次值,再次使用时只能获取其已经赋过的值。
def
声明的变量每一次获取或使用都会重新赋值。
object Test {
def main(args: Array[String]): Unit = {
def p = {
println("p...");
val prop = new java.util.Properties()
prop.put("k1", "v1")
prop
}
println(p)
println(p)
p.put("k2", "v2")
println(p)
println(p)
}
}
/*
输出:
p...
{k1=v1}
p...
{k1=v1}
p...
p...
{k1=v1}
p...
{k1=v1}
*/
详细内容可以参考:https://blog.csdn.net/qq_29343201/article/details/56281777