我用if / else子句编写了一个函数,但考虑了使用模式匹配的可能性。我失败了,但是很高兴看到如何为它的学习成果做好准备。
def sha1():String = {
if (System.getProperty("os.name").contains("OS X")){
("x.tif" !!).toString
}
else{
"failed"
}
}
我尝试了这个逻辑,我希望字符串参与测试("测试"包含(" 0S X")是合法的)。这会导致错误。
def sha2(command:String):String = System.getProperty("os.name") match {
case contains("OS X")=> ("x.tif" !!).toString
}
第二次尝试是写一些类似的东西,我在函数调用的输入上匹配:
def sha3():String = System.getProperty("os.name").contains(x) match {
case x=="OS X" => "hello"
}
答案 0 :(得分:3)
这可以通过使用模式匹配来表达
def sha1():String = System.getProperty("os.name") match {
case s if s.contains("OS X") => ("x.tif" !!).toString
case _ => "failed"
}
如果您的代码真的只有一个case
,那么使用if
else
的方法可能会更好
def sha1(): String =
if ( System.getProperty("os.name").contains("OS X") )
("x.tif" !!).toString
else
"failed"
答案 1 :(得分:0)
你不需要模式匹配。只是做:
"OS X".r
.findFirstIn(System.getProperty("os.name"))
.map { _ => ("x.tif" !!).toString }
.getOrElse("failed")