我試圖在 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”-錯誤。我究竟做錯了什么?
uj5u.com熱心網友回復:
Scala運算式由運算子和操作陣列成。條件運算式 ( if-else) 需要在ifand之后的其他運算式else。在第一種情況下,val int = 10當需要運算式時,您正在使用定義(例如:)。這是第一個錯誤的原因。
但是通過將定義放在花括號內,您使它成為一個塊運算式,因此編譯器不再抱怨。
if(true) {
val integer = 10
}
但是,integer具有本地范圍并且在外部不可用。因此 的第二個錯誤not found。
你需要的是:
val integer =
if(somecheck())
10
else
20
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/381441.html
