在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"))如果出现错误,这将失败:
函数做些什么-字符串不能应用于参数: 域:字符串 参数: Object 范围:字符串 具有预期类型: String
是否有一种使用core.match使其工作的方法?
谢谢!
发布于 2015-07-15 08:47:13
尝试在class而不是type上进行调度。core.typed对type没有真正的支持,因为它围绕元数据的怪异之处。
https://stackoverflow.com/questions/31416900
复制相似问题