在 if 语句中定义新值时简单表达式的非法开始
Illegal start of simple expression when when defining new value in if-statement
我试图在 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
}
...我在这些行中没有收到错误,但后来收到“未找到:值 df_fixed”错误。我做错了什么?
Scala expressions 由运算符和操作数组成。条件表达式 (if-else
) 需要 if
和 else
之后的其他表达式。在第一种情况下,当需要表达式时,您正在使用定义(例如:val int = 10
)。这是第一个错误的原因。
但是通过将定义放在花括号内,您使它成为一个块表达式,因此编译器不会再报错了。
if(true) {
val integer = 10
}
但是,integer
具有本地作用域,在外部不可用。因此 not found
.
的第二个错误
您需要的是:
val integer =
if(somecheck())
10
else
20
我试图在 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
}
...我在这些行中没有收到错误,但后来收到“未找到:值 df_fixed”错误。我做错了什么?
Scala expressions 由运算符和操作数组成。条件表达式 (if-else
) 需要 if
和 else
之后的其他表达式。在第一种情况下,当需要表达式时,您正在使用定义(例如:val int = 10
)。这是第一个错误的原因。
但是通过将定义放在花括号内,您使它成为一个块表达式,因此编译器不会再报错了。
if(true) {
val integer = 10
}
但是,integer
具有本地作用域,在外部不可用。因此 not found
.
您需要的是:
val integer =
if(somecheck())
10
else
20