我有以下代码,但我想使其在习惯上更正确。首先,我将三个变量定义为Option[String]
。
var p1 = None : Option[String]
var p2 = None : Option[String]
var p3 = None : Option[String]
然后,我使用函数getParameters()
定义这些参数。基本上,此功能仅从文本文件中读取参数。
getParameters()
//...
def getParameters(): Unit = {
val p1 = Some(getP1())
val p2 = Some(getP2())
val p3 = Some(getP3())
}
最后,在getParameters()
之后,我运行了另一个函数getRules
,该函数使用p1
,p2
和p3
。现在它期望它们是String
而不是Some[String]
。
val df = getRules(p1,p2,p3)
如果这三个参数中的任何一个为None
,则程序应引发错误。我想知道我是否走对了。参数的个数越大,例如10或15?处理这些参数的最佳捷径是什么?
答案 0 :(得分:3)
val valuesOpt = for(a <- p1; b <- p2; c <- p3) yield (a,b,c)
valuesOpt.map{
case (a, b, c) => getRules(a, b, c)
}.getOrElse(throw new Exception("Nope"))
答案 1 :(得分:2)
有多种方法可以拆开选件的包装,但就您而言,我认为这是最容易阅读/维护的包装:
a=int(input())
b=str(a)
c=int(b[0])*3
print(c)
*编辑:这是一个小的scala小提琴,以演示如何使用它:https://scalafiddle.io/sf/YVCYBBl/1