我有一个简单的Scops解析器,看起来像
val parser: scopt.OptionParser[Config] = new scopt.OptionParser[Config]("my-app") {
head("scopt", "3.x")
(...)
opt[String]('q', "query")
.text("The query.")
.action { (value, conf) => conf.copy(
query = value
)}
.optional
}
(...)
parser.parse(args, Config()) match {
case Some(config) => drive(config)
(...)
在我的驱动程序函数中,我希望使用用户通过参数提供的参数初始化参数或其他默认值。
我可以做类似
的事情var myQuery = _
if config.query != "" myQuery = config.query
else myQuery = config.query
但是,(i)我怀疑对空字符串进行测试是检查用户是否提供了可选参数的正确方法,以及(ii)在编写此字符时看起来非常实用阶。
问题:有一个很好的功能方法吗?我认为模式匹配如下所示,但Scopt参数似乎不作为Option [String]
返回val myQuery: String = config.query match {
case Some(q) => q
case None => "This is the default query"
}
答案 0 :(得分:1)
只需将Option[String]
设为None
(默认为query = value
),然后将query = Some(value)
行更改为import fileinput
with fileinput.FileInput(inputFile, inplace=True, backup='.back') as f:
for line in f:
print(line.replace(textToSearch, textToReplace), end='')
。