use*_*957 0 scala pattern-matching
根据理解,模式匹配不起作用。
我在课本“ Scala中编程”中阅读了模式匹配的概念。
我有一个模式匹配的定义,如下所示。
def checkMe (a:Any) = a match {
case Int => "I am an Integer"
case Double => "I am a Double"
case Char => "I am a Charecter"
case _ => "I am something else"
}
Run Code Online (Sandbox Code Playgroud)
无论我在调用该函数时传递了什么,总是执行默认情况。
例如:checkMa(100)给出“我是别的东西” checkMe(10。)也给出“我是别的东西”等。
有人可以帮我理解定义中的错误吗。
我希望定义根据我通过的类型执行。
原因是您要与伴随对象(Int,Double,Char)匹配而不是实际类型,一种解决方案是与这样的类型匹配:
def checkMe (a:Any) = a match {
case _: Int => "I am an Integer"
case _: Double => "I am a Double"
case _: Char => "I am a Charecter"
case _ => "I am something else"
}
Run Code Online (Sandbox Code Playgroud)
然后,您可以在REPL中进行测试以查看预期结果:
@ checkMe(4)
res3: String = "I am an Integer"
@ checkMe(4.0)
res4: String = "I am a Double"
@ checkMe('a')
res5: String = "I am a Charecter"
@ checkMe("Asdas")
res6: String = "I am something else"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
53 次 |
| 最近记录: |