【发布时间】:2018-03-11 23:00:38
【问题描述】:
我在 Scala Interpreter - REPL 上执行此操作,我试图将 Tuple(account_df_index, disposition_df_index) 的值设置为 (0,1),但在执行时在 else 的第一行抛出错误堵塞。如果我的理解是正确的,应该分配 (0,1) 并且不能执行 else 块。我哪里错了?
val extra_params = None
val extra_params_map = if (extra_params.equals(None)) {None} else{
extra_params.toMap}
val (account_df_index, disposition_df_index) = if(extra_params.equals(None))
{
(0,1)
} else {
if(extra_params_map.contains("dataframe_index_map"){
val dataframe_map =
extra_params_map.get("dataframe_index_map")
.get.parseJson
.convertTo[Map[String, Int]]
val account_df_index = dataframe_map.getOrElse("account", 0)
val disposition_df_index = dataframe_map.getOrElse("disposition", 1)
(account_df_index, disposition_df_index)
} else{
(0,1)
}
}
【问题讨论】:
-
我尝试过使用无,带有 .equals 的单元检查都抛出相同的问题:错误:值包含不是 Equals 的成员 if (extra_params_map.contains("dataframe_index_map"))
-
我刚刚尝试缩进它,但它似乎完全损坏无法修复。请确保您阅读了有关Option(特别是
None)和Map 的文档,明确声明每个变量的类型,直到您至少对您正在做的事情有一个粗略的计划,并且左侧元组的元数与元组的元数匹配:4>2。并阅读Style guide。 -
一堆未排序的提示: - 不要与
equals比较,==通常就足够了; - 不要将任何东西与None进行比较,在选项上使用模式匹配或map或fold; -
对不起,不匹配,我已经编辑了。我会看看地图,折叠和选项。谢谢。
标签: scala read-eval-print-loop