Clojure 中函数的类型提示

2024-02-15

我正在尝试解决 Clojure 中的反射警告,该警告似乎是由于对作为普通 Java 对象的函数返回值缺乏类型推断而导致的。

演示该问题的简单示例代码:

(set! *warn-on-reflection* true)    

(defn foo [#^Integer x] (+ 3 x))

(.equals (foo 2) (foo 2))

=> Reflection warning, NO_SOURCE_PATH:10 - call to equals can't be resolved.
   true

解决这个问题的最佳方法是什么?这可以通过类型提示来完成吗?


这两个版本似乎有效:

user> (defn foo [^Integer x] (+ 3 x))
#'user/foo
user> (.equals (foo 2) (foo 2))
Reflection warning, NO_SOURCE_FILE:1 - call to equals can't be resolved.  ;'
true
user> (.equals ^Integer (foo 2) ^Integer (foo 2))
true
user> (defn ^Integer foo [^Integer x] (+ 3 x))
#'user/foo
user> (.equals (foo 2) (foo 2))
true

请注意,在 1.2 版本发布之前,Clojure 中的类型提示仍然在不断变化,因此这可能不会永远以同样的方式工作。另请注意#^已被弃用,有利于^.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Clojure 中函数的类型提示 的相关文章

  • Java中反射是如何实现的?

    Java 7 语言规范很早就指出 本规范没有详细描述反射 我只是想知道 反射在Java中是如何实现的 我不是问它是如何使用的 我知道可能没有我正在寻找的具体答案 但任何信息将不胜感激 我在 Stackoverflow 上发现了这个 关于 C
  • Javascript 函数查找数字的倍数

    创建一个名为的函数multiplesOf 它将接受两个参数 第一个参数是数字数组 第二个参数是数字 该函数应返回一个新数组 该数组由参数数组中的每个数字组成 该数字是参数数字的倍数 So multiplesOf 5 6 7 8 9 10 3
  • 如何找到给定字符串的最长重复子串

    我是java新手 我被分配寻找字符串的最长子字符串 我在网上研究 似乎解决这个问题的好方法是实现后缀树 请告诉我如何做到这一点或者您是否有任何其他解决方案 请记住 这应该是在 Java 知识水平较低的情况下完成的 提前致谢 附 测试仪字符串
  • 使用 Android 发送 HTTP Post 请求

    我一直在尝试从 SO 和其他网站上的大量示例中学习 但我无法弄清楚为什么我编写的示例不起作用 我正在构建一个小型概念验证应用程序 它可以识别语音并将其 文本 作为 POST 请求发送到 node js 服务器 我已确认语音识别有效 并且服务
  • 制作一个交互式Windows服务

    我希望我的 Java 应用程序成为交互式 Windows 服务 用户登录时具有 GUI 的 Windows 服务 我搜索了这个 我发现这样做的方法是有两个程序 第一个是服务 第二个是 GUI 程序并使它们进行通信 服务将从 GUI 程序获取
  • Final字段的线程安全

    假设我有一个 JavaBeanUser这是从另一个线程更新的 如下所示 public class A private final User user public A User user this user user public void
  • Android:捕获的图像未显示在图库中(媒体扫描仪意图不起作用)

    我遇到以下问题 我正在开发一个应用程序 用户可以在其中拍照 附加到帖子中 并将图片保存到外部存储中 我希望这张照片也显示在图片库中 并且我正在使用媒体扫描仪意图 但它似乎不起作用 我在编写代码时遵循官方的Android开发人员指南 所以我不
  • 无法展开 RemoteViews - 错误通知

    最近 我收到越来越多的用户收到 RemoteServiceException 错误的报告 我每次给出的堆栈跟踪如下 android app RemoteServiceException Bad notification posted fro
  • 控制Android的前置LED灯

    我试图在用户按下某个按钮时在前面的 LED 上实现 1 秒红色闪烁 但我很难找到有关如何访问和使用前置 LED 的文档 教程甚至代码示例 我的意思是位于 自拍 相机和触摸屏附近的 LED 我已经看到了使用手电筒和相机类 已弃用 的示例 但我
  • JavaMail 只获取新邮件

    我想知道是否有一种方法可以在javamail中只获取新消息 例如 在初始加载时 获取收件箱中的所有消息并存储它们 然后 每当应用程序再次加载时 仅获取新消息 而不是再次重新加载它们 javamail 可以做到这一点吗 它是如何工作的 一些背
  • 操作错误不会显示在 JSP 上

    我尝试在 Action 类中添加操作错误并将其打印在 JSP 页面上 当发生异常时 它将进入 catch 块并在控制台中打印 插入异常时出错 请联系管理员 在 catch 块中 我添加了它addActionError 我尝试在jsp页面中打
  • Spring @RequestMapping 带有可选参数

    我的控制器在请求映射中存在可选参数的问题 请查看下面的控制器 GetMapping produces MediaType APPLICATION JSON VALUE public ResponseEntity
  • 无法解析插件 Java Spring

    我正在使用 IntelliJ IDEA 并且我尝试通过 maven 安装依赖项 但它给了我这些错误 Cannot resolve plugin org apache maven plugins maven clean plugin 3 0
  • 如何将 pfx 文件转换为 jks,然后通过使用 wsdl 生成的类来使用它来签署传出的肥皂请求

    我正在寻找一个代码示例 该示例演示如何使用 PFX 证书通过 SSL 访问安全 Web 服务 我有证书及其密码 我首先使用下面提到的命令创建一个 KeyStore 实例 keytool importkeystore destkeystore
  • Eclipse Java 远程调试器通过 VPN 速度极慢

    我有时被迫离开办公室工作 这意味着我需要通过 VPN 进入我的实验室 我注意到在这种情况下使用 Eclipse 进行远程调试速度非常慢 速度慢到调试器需要 5 7 分钟才能连接到远程 jvm 连接后 每次单步执行断点 行可能需要 20 30
  • 在mockito中使用when进行模拟ContextLoader.getCurrentWebApplicationContext()调用。我该怎么做?

    我试图在使用 mockito 时模拟 ContextLoader getCurrentWebApplicationContext 调用 但它无法模拟 here is my source code Mock org springframewo
  • 如何在桌面浏览器上使用 webdriver 移动网络

    我正在使用 selenium webdriver 进行 AUT 被测应用程序 的功能测试自动化 AUT 是响应式网络 我几乎完成了桌面浏览器的不同测试用例 现在 相同的测试用例也适用于移动浏览器 因为可以从移动浏览器访问 AUT 由于它是响
  • simpleframework,将空元素反序列化为空字符串而不是 null

    我使用简单框架 http simple sourceforge net http simple sourceforge net 在一个项目中满足我的序列化 反序列化需求 但在处理空 空字符串值时它不能按预期工作 好吧 至少不是我所期望的 如
  • 静态变量的线程安全

    class ABC implements Runnable private static int a private static int b public void run 我有一个如上所述的 Java 类 我有这个类的多个线程 在里面r
  • 使用 xpath 和 vtd-xml 以字符串形式获取元素的子节点和文本

    这是我的 XML 的一部分

随机推荐

  • HTTP 状态 500 - 未找到提供程序 org.glassfish.json.JsonProviderImpl

    我在用netbeans 8 jdk 7 tomcat 8 05 我创建了一个网络应用程序netbeans并添加了javax jsonapi 到我的项目 代码显示没有错误 但是当我运行我的 servlet 时 出现以下错误 HTTP Stat
  • webpack-dev-server 代理到 docker 容器

    我有 2 个使用 docker compose 管理的 docker 容器 似乎无法正确使用 webpack 来代理某些请求到后端 api docker compose yml version 2 services web build co
  • 如何与 python 的子进程作为连续会话进行交互

    我需要在 python 中实现一个过滤器 它从 Linux 命令行字典工具中挑选出特定的输出 我需要 从文件中获取一组单词 查找每个单词 1 如果单词不包含 则跳过它 2 else 如果是动词 则保存定义 为了测试代码 我写了两个pytho
  • 尝试运行 org.hibernate.tool.ant.EnversHibernateToolTask​​ 时遇到很多绊脚石

    我正在尝试按照建议运行 org hibernate tool ant EnversHibernateToolTask恩弗斯的相当简洁的指南 http www jboss org envers downloads 表的第二行 文档有 PDF
  • Macos Catalina 更新后出现错误:无法运行 colorls

    更新至 macOSCatalina打开终端时出错 ERROR Can t find Ruby library file or shared library colorls usage dirname path Users varunsukh
  • 仅使用公式即可获取当前文化以进行本地化

    有没有办法使用 Excel 中的公式确定当前系统区域性不使用任何VBA代码 我想象这样简单的事情 IF CULTURE sk SK Preh ad Overview 或者类似的事情也适合我 IF CURRENCYSIGN Preh ad O
  • 仅备份 SQL 架构?

    我需要创建 SQL Server 2005 数据库的备份 该数据库只有结构 没有记录 只有架构 有什么办法可以做到这一点吗 编辑 我正在尝试创建一个备份文件以与旧进程一起使用 因此脚本无法满足我的目的 抱歉 使用 3 步流程 从工作数据库生
  • 通过网站从 PHP 服务器下载文件 [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我有物理文件 希望用户在我的网站上下载 这些文件位于 C xampp htdocs myfile uploads 我需要一个 PHP 脚本
  • 撤消 git Push 到 Assembla

    所以 今天我想做一件好事并重新排列我的存储库中的文件 致力于并推动我的Assembla存储库 由于我没有使用 git moving 命令 所有文件都丢失了历史记录 我意识到自己的错误 并希望摆脱不必要的改变 以便之后可以采取正确的行动 我尝
  • 将 Java-Pair-Rdd 转换为 Rdd

    我需要将 Java pair rdd 转换为 csv 所以我想将其转换为rdd 来解决我的问题 我想要的是改变我的rdd 从 Key Value Jack a b c to Key value Jack a Jack b Jack c 我认
  • 如何在ElasticSearch中不进行分析?

    我不想分析 ElasticSearch 字段中的一个字段 即 e 应逐字保存和比较 这些值将包含字母 数字 空格 破折号 斜杠以及可能的其他字符 如果我没有在该字段的映射中提供分析器 则默认情况下仍使用分词器将我的逐字字符串分解为单词块 我
  • 在 Ruby 中删除“@”符号及其后面的所有内容

    我正在开发一个应用程序 我需要将用户电子邮件地址中 符号之前的任何内容作为他 她的名字和姓氏传递 例如 如果用户有电子邮件地址 电子邮件受保护 cdn cgi l email protection 比当用户提交表单时我从电子邮件中删除 ex
  • Typescript - 导入 Express 不起作用

    我的应用程序中有这个 types express已安装依赖项 import express require express 它指向的是express并说this is an unexpected identifier当我运行我的服务器时 我
  • Memcached 守护进程是否可以在不终止进程的情况下释放未使用的内存?

    我相信您不能强制正在运行的 Memcached 实例取消分配内存 除非终止该 Memcached 实例 并释放它所持有的所有内存 有谁知道一份明确的文档 甚至是来自可靠来源的邮件列表或博客文章 可以证实或否认这种印象 据我了解 Memcac
  • Tkinter tkFileDialog 不存在[重复]

    这个问题在这里已经有答案了 我正在尝试使用 Python 中的 Tkinter 显示打开的文件对话框 我发现的每个示例似乎都很容易使用 但它们都以以下行开头 import tkFileDialog 这行代码给我抛出了一个错误 说 No mo
  • MVC3 - 编译的 Razor 视图找不到 _ViewStart

    我在单独的类库中使用编译的 Razor 视图作为 MVC3 的一种插件系统 我遵循 Chris Van De Steed 的指南here http www chrisvandesteeg nl 2010 11 22 embedding pr
  • 如何使用 bin/www 为node.js heroku 部署编写Procfile?

    我正在尝试部署 Heroku 应用程序 我相信 procfile 可能是我的应用程序未部署的原因 我尝试了多种解决方案 包括 网络 节点 bin www 网络 npm 启动 我的应用程序无法运行可能还有另一个原因 但我想确保我的 Procf
  • 访问类中的值类似于 boost::any

    我正在做一个简单的boost any 类似用于教育目的的课程 但我不知道如何访问存储的值 我可以完美地设置该值 但是当我尝试访问 holder 类中的任何成员时 编译器只是抱怨在它派生的类中找不到该成员 我无法将成员声明为virtual因为
  • 使用 Unirest C# 将 http 响应正文转换为 JSON 格式

    我正在使用 mashape api https market mashape com montanaflynn dictionary https market mashape com montanaflynn dictionary 这是我的
  • Clojure 中函数的类型提示

    我正在尝试解决 Clojure 中的反射警告 该警告似乎是由于对作为普通 Java 对象的函数返回值缺乏类型推断而导致的 演示该问题的简单示例代码 set warn on reflection true defn foo Integer x