首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在if-语句中定义新值时,简单表达式的非法开始

在if-语句中定义新值时,简单表达式的非法开始
EN

Stack Overflow用户
提问于 2021-12-10 06:14:52
回答 1查看 136关注 0票数 2

我试图在if-语句中声明一个新值,但是使用下面的代码获得非法的开始错误。

代码语言:javascript
复制
// 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

如果我把它包在波浪托架里..。

代码语言:javascript
复制
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。我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-10 08:07:07

Scala 表达由运算符和操作数组成。条件表达式(if-else)需要在ifelse之后的其他表达式。在第一种情况下,您使用的是一个定义(例如:val int = 10),当需要表达式时。这是第一个错误的原因。

但是,通过将定义放入大括号中,使其成为块表达式,所以编译器不再抱怨了。

代码语言:javascript
复制
if(true) {
  val integer = 10
}

但是,integer有一个本地范围,在外部不可用。因此,not found的第二个错误。

你需要的是:

代码语言:javascript
复制
val integer = 
  if(somecheck()) 
    10 
  else 
    20 
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70300452

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档