将符号转换为“ unmangled”字符串

致癌物质

我在做数学游戏。为了存储数学问题,我使用以下记录:

(defrecord Question [args operator]
  Object
  (toString [self]
    (apply str (drop-last 2 (interleave args (repeat \space) (repeat operator) (repeat \space))))))

toString“办法”的指定参数和操作转换成缀操作字符串。

我的问题是,当我尝试将函数(如*)转换为字符串时,我得到了合格的,符合Java的符号名称:

(str *)
"clojure.core$_STAR_@a2a3e7"

我想要的只是将符号从字面上转换为字符串,因此*函数yields "*"我能做的最好的事情就是使用从函数符号到字符串的预定义映射;但理想情况下,我不需要地图,而直接生成符号的字符串版本。

这可能吗?

山姆·埃斯特普(Sam Estep)

您将通过评估获得符号'*通过评估可获得功能混淆*

'*
;;=> *

*
;;=> #function[clojure.core/*]

当然,'*这不是获得符号的唯一方法*'可以使用等效的quote特殊形式来代替使用reader宏,或者可以使用该symbol函数根据字符串创建符号,或者可以执行其他操作:

(quote *)
;;=> *

(symbol "*")
;;=> *

如果将符号转换为字符串,则会获取由该符号的名称(如果存在的话,还有名称空间)组成的字符串。如果将函数转换为字符串,则会获取对象的默认Java字符串表示形式:其类的名称,后跟该@字符及其在内存中位置的十六进制表示形式:

(str '*)
;;=> "*"

(str *)
;;=> "clojure.core$_STAR_@a2a3e7"

因此,如果您Question使用函数 *作为其创建一个operator然后尝试将该函数转换为字符串,则会得到以下信息:

(str (->Question [4 2] *))
;;=> "4 clojure.core$_STAR_@a2a3e7 2 "

另一方面,如果您创建一个Question符号 *符号operator,则会得到以下符号

(str (->Question [4 2] '*))
;;=> "4 * 2 "

给定一个符号,您可以使用将其解析为var resolve,然后使用以下方法获取该var的值deref

@(resolve '*)
;;=> #function[clojure.core/*]

但是,通常不能采用其他方式(从函数到符号)。有关更多详细信息,请参见此问题的答案

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将字节转换为带符号字节的字符串

来自分类Dev

尝试将字符串转换为符号

来自分类Dev

将字节的字符串转换为无符号的int

来自分类Dev

将Double转换为带指数符号的字符串

来自分类Dev

将指数符号数转换为字符串 - 解释

来自分类Dev

Ruby:在字符串插值期间将字符串转换为符号

来自分类Dev

将Int转换为无符号字符

来自分类Dev

将BCD转换为无符号字符

来自分类Dev

将Int转换为无符号字符

来自分类Dev

Python正在将字符转换为符号

来自分类Dev

将字符串中的Unicode符号\ uXXXX转换为Swift中的字符

来自分类Dev

将无符号字符数组转换为IP字符串的最快方法是什么

来自分类Dev

C ++:如何将字符串向量元素转换为无符号字符?

来自分类Dev

将 Unicode 字符串转换为显示表情符号字符

来自分类Dev

尝试创建新记录时“没有将符号隐式转换为字符串”

来自分类Dev

将很小的python小数转换为非科学符号字符串

来自分类Dev

使用Oj.dump进行序列化时将符号转换为字符串

来自分类Dev

将大数转换为没有科学符号的字符串

来自分类Dev

使用中止符号将语言类型转换为R中的字符串

来自分类Dev

通过PL / SQL将字符串转换为代码符号

来自分类Dev

将包含utf-8符号的json字符串转换为php数组

来自分类Dev

没有将符号隐式转换为字符串,回形针和Rails 4

来自分类Dev

Karma + Mocha + React无法将符号值转换为字符串

来自分类Dev

未捕获的TypeError:无法将符号值转换为字符串

来自分类Dev

r:sym()函数失败[无法将字符串转换为符号]

来自分类Dev

尝试将符号包装器对象明确转换为字符串时出错

来自分类Dev

将长的double转换为没有科学符号的字符串(Dart)

来自分类Dev

将整数转换为带符号的2的补码二进制字符串

来自分类Dev

将字符串比较符号转换为R中的函数

Related 相关文章

  1. 1

    将字节转换为带符号字节的字符串

  2. 2

    尝试将字符串转换为符号

  3. 3

    将字节的字符串转换为无符号的int

  4. 4

    将Double转换为带指数符号的字符串

  5. 5

    将指数符号数转换为字符串 - 解释

  6. 6

    Ruby:在字符串插值期间将字符串转换为符号

  7. 7

    将Int转换为无符号字符

  8. 8

    将BCD转换为无符号字符

  9. 9

    将Int转换为无符号字符

  10. 10

    Python正在将字符转换为符号

  11. 11

    将字符串中的Unicode符号\ uXXXX转换为Swift中的字符

  12. 12

    将无符号字符数组转换为IP字符串的最快方法是什么

  13. 13

    C ++:如何将字符串向量元素转换为无符号字符?

  14. 14

    将 Unicode 字符串转换为显示表情符号字符

  15. 15

    尝试创建新记录时“没有将符号隐式转换为字符串”

  16. 16

    将很小的python小数转换为非科学符号字符串

  17. 17

    使用Oj.dump进行序列化时将符号转换为字符串

  18. 18

    将大数转换为没有科学符号的字符串

  19. 19

    使用中止符号将语言类型转换为R中的字符串

  20. 20

    通过PL / SQL将字符串转换为代码符号

  21. 21

    将包含utf-8符号的json字符串转换为php数组

  22. 22

    没有将符号隐式转换为字符串,回形针和Rails 4

  23. 23

    Karma + Mocha + React无法将符号值转换为字符串

  24. 24

    未捕获的TypeError:无法将符号值转换为字符串

  25. 25

    r:sym()函数失败[无法将字符串转换为符号]

  26. 26

    尝试将符号包装器对象明确转换为字符串时出错

  27. 27

    将长的double转换为没有科学符号的字符串(Dart)

  28. 28

    将整数转换为带符号的2的补码二进制字符串

  29. 29

    将字符串比较符号转换为R中的函数

热门标签

归档