当我在Scala工作时,我喜欢我可以在类型上进行模式匹配,类型检查器将使用该类型:
val x : Any = "boop"
x match {
case y : String => do-something-stringy(y);
case z : Int => .... etc
}
我知道在core.typed中,条件将帮助类型检查器解析确切的类型。我尝试使用core.match复制它:
(ann do-something-stringy [String -> String])
(defn do-something-stringy [message]
(str "Hello " message))
;; Doesn't work
(ann do-things [Object -> String])
(defn do-things [foo]
(match [(type foo)]
[String] (do-something-stringy foo)
:else "Nope"))
失败并显示错误:
函数do-something-stringy无法应用于参数:
域: 串
参数: 对象
范围: 串
预期类型: 串
有没有办法让它使用core.match?
谢谢!