我试图在if-语句中声明一个新值,但是使用下面的代码获得非法的开始错误。
// df(: DataFrame) is defined earlier
if (df.columns.contains(f"original_cols_$prev_k%s"))
val df_fixed = df.drop(f"original_cols_$prev_k%s").drop(f"scaled_cols_$prev_k%s")
else // No change, but to respect the immutability...
val df_fixed = df如果我把它包在波浪托架里..。
if (df.columns.contains(f"original_cols_$prev_k%s")){
val df_fixed = df.drop(f"original_cols_$prev_k%s").drop(f"scaled_cols_$prev_k%s")
} else { // No change, but to respect the immutability...
val df_fixed = df
}..。我不会在这些行中出现错误,但稍后会得到"not found: value df_fixed"-error。我做错了什么?
发布于 2021-12-10 08:07:07
Scala 表达由运算符和操作数组成。条件表达式(if-else)需要在if和else之后的其他表达式。在第一种情况下,您使用的是一个定义(例如:val int = 10),当需要表达式时。这是第一个错误的原因。
但是,通过将定义放入大括号中,使其成为块表达式,所以编译器不再抱怨了。
if(true) {
val integer = 10
}但是,integer有一个本地范围,在外部不可用。因此,not found的第二个错误。
你需要的是:
val integer =
if(somecheck())
10
else
20 https://stackoverflow.com/questions/70300452
复制相似问题