您可以在 clojure defrecord 中指定方法的返回类型吗?

2024-06-24

我已经创建了一个应用程序信息接口和一个类,但是当我查看生成的类时,所有方法的返回类型都是 Object,我可以将返回类型更改为 String 吗?文档说类型提示可以使用 defrecord 但没有给出示例,我能找到的唯一示例是类型提示字段和方法参数。

src/com/vnetpublishing.clj

(ns com.vnetpublishing)

(defprotocol ApplicationInfo
  (author [obj])
  (author-email [obj])
  (copyright [obj])
  (app-name [obj])
  (version [obj])
)

src/Physics.clj

(ns Physics)

(defrecord info [] com.vnetpublishing.ApplicationInfo
  (author [this] "Ralph Ritoch")
  (author-email [this] "Ralph Ritoch <root@localhost>")
  (copyright [this] "Copyright \u00A9 2014 Ralph Ritoch. All rights reserved.")
  (app-name [this] "Physics")
  (version [this] "0.0.1-alpha")
)

Look at 定义接口 http://clojure.github.io/clojure/clojure.core-api.html#clojure.core/definterface宏。 与 defprotocol 不同,definterface 宏提供了一种为方法编写返回类型提示的方法。

艾伦·马洛伊对此解释得很好here https://groups.google.com/forum/#!topic/clojure/JxYHE4eqDv4:

“协议供 Clojure 函数使用,而不是 应该是静态类型的;接口供消费 Java 类,需要静态类型。”

然后您可以像这样使用它:

(definterface Test
 (^void returnsVoid [])
 (^int returnsInt [])
 (^long returnsLong [])                                                             
 (^String returnsString [])
 (^java.util.HashMap returnsJavaUtilHashMap []))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

您可以在 clojure defrecord 中指定方法的返回类型吗? 的相关文章

  • 当参数是大映射时跟踪函数

    当我跟踪一个函数时 如果其中一个参数是包含大量元素的嵌套映射 则跟踪会充满混乱 这是一个典型的例子 TRACE t36705 get value nodeclass simple nodeid simple25 dock constan t
  • Java - 在特定日期执行方法[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我需要在每年的特定日期执行一个方法 我该如何在java中执行此操作 Thanks Chris 按优先顺序排列 The Quartz htt
  • Haskell 中的多态函数作为参数

    我有一个带有两个构造函数的 ADT 一个包裹着一个Double和一个包裹着Integer 我想创建一个函数 它采用一元函数Numtypeclass 并返回一个函数 该函数将该一元函数应用于我的 ADT 的内容 我试过这个 data X Y
  • MySQL/PDO::quote() 尽管使用 PDO::PARAM_INT 参数,但仍在整数周围加上引号

    无论我传递给什么值 数据类型对 它都会出现 pdo gt quote value type 它总是将其引用为字符串 echo pdo gt quote foo PDO PARAM STR foo as expected echo pdo g
  • Java中有默认的数字类型吗

    如果我写这样的东西 System out println 18 哪种类型有 18 是吗int or byte 或者它还没有类型 它不能是 int 因为这样的东西是正确的 byte b 3 这是不正确的 int i 3 byte bb i e
  • 如何在 Clojure 中将字符串转换为函数?

    我一直在努力Clojure 问题 135 中缀计算器 http www 4clojure com problem 135 基本上是一个简化的中缀到前缀算术计算器 7 2 5 我按照指定解决了问题 但这让我想知道 如果参数作为字符串提供怎么办
  • Clojure 宏总是泄漏吗?

    如果你读过这个问题宏 gt 带有匿名函数 https stackoverflow com questions 10740265 macro with anonymous functions 10740411 comment13981517
  • 不明白这个 haskell 代码中的内容

    我有一些 Haskell 代码 我正在尝试完成它 但我不明白其中发生了什么 type Bag a a gt Int emptyB Bag a emptyB e gt 0 countB Eq a gt Bag a gt a gt Int co
  • 将“C# 友好类型”名称转换为实际类型:“int” => typeof(int)

    我想得到一个System Type给定一个string指定 原始 类型C 友好名称 基本上与 C 编译器读取 C 源代码时的方式相同 我觉得描述我所追求的最好方式是单元测试的形式 我希望存在一种通用技术 可以使以下所有断言通过 而不是尝试对
  • C#:如何在调用时触发事件的方法上创建属性?

    在 C 或 NET 中 是否有一种方法可以在方法上创建一个属性 以便在调用该方法时触发事件 理想情况下 我能够在调用该方法之前和之后运行自定义操作 我的意思是这样的 TriggersMyCustomAction public void Do
  • 如何在数组类型上调度多方法

    我正在研究一种多方法 需要更新序列中一堆不同事物的哈希值 看起来相当简单 直到我尝试输入 X 数组的类型 defmulti update hash class 2 type byte 1 gt java lang Byte defmetho
  • TypeScript 是否可以从动态对象推断键?

    我在这里想要实现的是从数组生成的对象的智能感知 自动完成 类似于 Redux 的 Action Creator 一个字符串数组 string 可以简化为具有形状的对象 string string 例如 const a ONE TWO THR
  • 制作 pacman 时遇到一些问题?

    编辑 完全忘记提及我正在用 Java 编码 我真的很难制作某种检测系统或某种方法来使我的吃豆人精灵 角色在游戏中的棋盘上顺利移动 我没有把黑板做成图像 我首先尝试过颜色检测 效果最好 但一点也不平滑 而且相当不稳定 然后我尝试手动输入不允许
  • SAS 中的大字符字段大小

    我正在尝试通过 SAS ODBC 直通从 MySQL 表导入大型 blob 字段 该字段大于 SAS 中允许的最大长度 根据 SAS 9 2 文档 字符类型字段的最大长度为 32k 有人有在 SAS 中存储大字符字段的经验吗 除了将其分解为
  • 最小数据类型 - 我可以定义一位变量吗? [复制]

    这个问题在这里已经有答案了 我只需要一位来表示我的数据 1 或 0 在 C 中这样做的最佳方法是什么 正常 数据类型太大 你可以创建 typedef struct foo unsigned x 1 foo 你告诉编译器你只会使用一位x 但是
  • 如何在 Java 中将公历转换为 Unix 时间?

    我需要一种将 GregorianCalendar 对象转换为 Unix 时间 即 long 的方法 还需要一种将 Unix 时间 长 转换回 GregorianCalendar 对象的方法 有没有什么方法可以做到这一点 如果没有 那我该怎么
  • C++ 获取成员函数的类型(返回类型和签名),不带成员函数的“const”限定符

    是否可以在没有成员函数的 const 限定符的情况下获取成员函数的类型 返回类型和签名 到目前为止 我尝试使用 decltype T 和 std remove const std decay Example void Func std st
  • 如何测量 Storm 拓扑中的延迟和吞吐量

    我正在通过示例学习 StormExclamationTopology https github com nathanmarz storm starter blob master src jvm storm starter Exclamati
  • 使用 leiningen 和 swank/slime 在 emacs 中运行 clojure 测试时停止无限循环

    在某些类型的代码中 在不破坏堆栈的情况下相对容易导致无限循环 当使用 clojure test 测试这种性质的代码时 有没有办法在不重新启动 swank 服务器的情况下中止当前正在运行的测试 目前我的工作流程涉及 lein swank 使用
  • Doctrine2:类型 x 已经存在

    我对 Doctrine API 有疑问 我想添加一个新的学说类型 我按照本文档创建了该类 并且已在自定义驱动程序中添加了该类型 Type addType custom Namespace NameBundle Types CustomTyp

随机推荐

  • 第二次触摸动画

    尝试掌握 Xcode 并且在过去几周似乎取得了一些进展 有谁知道自定义按钮可以在第二次单击时执行一组不同的动画的方法 假设我有一个自定义按钮 它是马里奥的 当我单击它时 他从屏幕中间跑出屏幕右侧 然后从屏幕左侧跑回中间 他也会发出噪音 我使
  • 警告:不要将 Android 上下文类放置在静态字段中;这是内存泄漏(也会破坏即时运行)

    安卓工作室 不要将 Android 上下文类放置在静态字段中 这是一个 内存泄漏 并且还会破坏即时运行 所以有2个问题 1 你如何称呼startService来自没有上下文静态变量的静态方法 2 如何从静态方法发送 localBroadca
  • 创建一个引用计数的图形

    看来在 matplotlib 中创建图形的标准方法并不像我在 python 中期望的那样 默认调用fig matplotlib figure in a 循环将保留创建的所有图形 并最终耗尽内存 有quite https stackoverf
  • python 将句子标记为单词

    我想从不同的句子中提取信息 所以我使用 nltk 将每个句子划分为单词 我使用以下代码 words for i in range len sentences words append nltk word tokenize sentences
  • iOS上使用NSURLProtocol实现AVPlayer边下载边播放

    我正在尝试在我的服务器上播放 mp4 视频 并且我想同时将该视频缓存到磁盘 我知道我可以只使用 2 个请求来执行此操作 一个用于下载 另一个由 AVPlayer 创建的用于播放视频 但这会浪费网络带宽 因此 我只需要使用一个外部请求来下载数
  • 如何在主屏幕上设置 Fire TV“图标”?

    我有一个 Fire TV 应用程序 该应用程序也将在普通 Android TV 上发布 以及一些搭载 Android 非 Android TV 的电视 也可能在平板电脑上发布 因此 我为 Android TV 设置了横幅 并且工作正常 该图
  • 如何将Spark DataFrame插入Hive内表?

    以追加模式将 DF 插入 Hive 内部表的正确方法是什么 看来我们可以使用 saveAsTable 方法直接将 DF 写入 Hive 或将 DF 存储到临时表然后使用查询 df write mode append saveAsTable
  • 从非托管代码传递指针

    我有一个导入 C dll 的 C 项目 该 dll 有以下功能 int primary read serial int handle int return code int serial int length 我想访问串行参数 我实际上已经
  • C# 设置 FontDialog 仅显示 TrueType 字体

    几乎每个论坛都有人问过这个问题 包括here https stackoverflow com questions 5027001 only truetype fonts are supported this is not a truetyp
  • 将具有混合内容的命名列表转换为数据框

    是否有更好更好的方法将具有混合内容的命名列表转换为数据框架 工作示例 my list lt list a 1 0 b foo c TRUE my df lt data frame key names my list stringsAsFac
  • Matplotlib 中经常使用的不寻常的 Python 语法元素

    一个附带条件 我的问题的核心语法元素是 Python 语言 然而 这个元素经常出现在 Matplotlib 库中 这是我见过它的唯一上下文 因此 我不确定这是一般的 Python 语法问题还是特定于库的问题 我所知道的是 我找不到任何要点
  • 在gnuplot中绘制两点之间的线

    我有一个 csv 文件 其格式如下 有四列 作为MWE xcoord1 ycoord1 xcoord2 ycoord2 0 1 0 2 0 4 0 3 0 5 0 3 0 7 0 5 我想从每个xcoord1 ycoord1 to xcoo
  • 我可以将 Entity Framework 6 与 Visual Studio 2010 一起使用吗?

    我们的开发团队 和构建服务器 成功地将 Visual Studio 2010 和 Visual Studio 2012 混合用于我们的应用程序 然而 自从从 EF5 升级到 EF6 后 我们似乎不再能够使用 VS2010 进行构建 具体来说
  • 如何修改 PHP/Jquery/Ajax 脚本以拥有多个表单字段

    我有一个 php Ajax Jquery 脚本 它将表单字段插入 MySQL 并更新页面 当您点击提交时无需刷新 我希望脚本提交四个表单字段 而不是仅一个 我已经更新了数据库表add delete record还有 3 个附加字段 余额 帐
  • Javascript 从多选选项框中获取值

    这让我发疯 这一定是我所忽视的简单而愚蠢的事情 我的表单中有一个多重选择框 我只是想获取所选的值 在我的循环中 如果我使用警报那么我就没有问题 一旦尝试连接这些值 我就会收到错误 SelBranch selected 为空或不是对象
  • 我可以在没有私钥的情况下将多个证书合并为一个吗?

    我需要在许多设备中拥有最新的证书信任存储 因此我希望能够将它们合并到证书中 然后我可以只推送该一个文件 我只想捆绑多个 CA 的公钥 但我不想添加私有文件 因为我想要将证书推送到我的所有设备 我认为这个功能被称为链 但 openssl 不会
  • 在seaborn kdeplot中设置置信度

    我对seaborn完全陌生 所以如果这是一个简单的问题 我深表歉意 但我在文档中找不到关于如何在kdeplot中控制n levels绘制的级别的描述 这是一个例子 import seaborn as sns import numpy as
  • 如何设置从自定义文件类型到程序的文件关联

    假设我创建了一个自定义文件 它实际上对应于我的程序可以读取的内容 称为 Bacon dek 我可以正常地从我的程序访问它 修改它等 只有少数问题仍然存在 也以相对正确的速度修复它们 现在 我想做的 并在完成后尝试快速修复 实际上是从 Win
  • 获取API错误处理

    我想显示来自 API 的错误消息 问题是如果我检查 我无法到达该错误response ok 它返回 Fetch 错误 而不是来自 API 的错误 如果我不使用if response ok 它从 API 返回错误 但调度成功操作 这是登录操作
  • 您可以在 clojure defrecord 中指定方法的返回类型吗?

    我已经创建了一个应用程序信息接口和一个类 但是当我查看生成的类时 所有方法的返回类型都是 Object 我可以将返回类型更改为 String 吗 文档说类型提示可以使用 defrecord 但没有给出示例 我能找到的唯一示例是类型提示字段和