首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >core.match可以用于添加对象的类型信息吗?

core.match可以用于添加对象的类型信息吗?
EN

Stack Overflow用户
提问于 2015-07-14 20:42:08
回答 1查看 30关注 0票数 0

在Scala工作时,我喜欢在类型上进行模式匹配,类型检查器将使用该类型:

代码语言:javascript
复制
val x : Any = "boop"
x match {
  case y : String => do-something-stringy(y);
  case z : Int => .... etc
} 

我知道在core.typed中,条件将帮助类型检查器解析确切的类型。我试着用core.match复制它:

代码语言:javascript
复制
(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使其工作的方法?

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2015-07-15 08:47:13

尝试在class而不是type上进行调度。core.typed对type没有真正的支持,因为它围绕元数据的怪异之处。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31416900

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档