首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >像“$%&”这样的符号在EDN中有什么用途?

像“$%&”这样的符号在EDN中有什么用途?
EN

Stack Overflow用户
提问于 2019-11-30 19:52:56
回答 1查看 191关注 0票数 1

我对EDN很陌生,并通过了EDN规范- https://github.com/edn-format/edn

像“$%&”这样的EDN符号的用途是什么?我如何使用它们来阅读Clojure中的EDN?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-30 21:09:09

规范提到了符号,但它们并不是指键盘上所说的符号。

这有点让人困惑,所以让我重新整理一下。例如,在键盘上,有人可能会说有符号,其中包括@#$%^&等。让我们称之为这些字符符号。

在EDN中,你有符号,但它不是指字符符号。它指的是数据类型.更令人困惑的是,它提到EDN符号可以包含一组特定的字符符号,但它不是字符符号。

那么EDN符号是什么呢?以下是一些:

代码语言:javascript
复制
hello
abc
+
person/name
this$is#insane

其中每一个都是有效的EDN符号。这有助于对比他们,以理解他们。下面是一串EDN字符串:

代码语言:javascript
复制
"hello"
"abc"
"+"
"person/name"
"this$is#insane"

以下是一系列EDN关键词:

代码语言:javascript
复制
:hello
:abc
:+
:person/name
:this$is#insane

那么,这些有什么区别呢?你看,EDN符号、字符串和关键字都只是一组字符,取决于它是符号、字符串还是关键字,允许的字符不同,例如,这就是为什么EDN规范说符号可以包含某些字符,比如$?。但是它没有提到所有字符,例如:符号中不允许^,但是它在字符串中:

代码语言:javascript
复制
hello^john ; Not a valid EDN symbol
"hello^john" ; A valid EDN string

此外,您还可以看到,EDN字符串必须在打开和结束的双引号""之间包含一组字符。另一方面,关键字必须具有以冒号:开头的字符集。符号不需要任何标记,任何连续的有效字符集都是符号,只要它们不以:开头或用双引号括起来。

现在要理解的第二件事是..。它们是干什么用的?这更模糊。当您将数据建模为EDN时,它们可以用于任何您想要使用的东西。您可以使用EDN字符串,也可以使用EDN关键字,反之亦然。无论何时,只要有一组只包含允许的符号字符的字符,就可以选择使用符号在EDN中表示这些字符。

通常,人们使用关键字来表示地图的键或标记,例如说动物的类型是:monkey

代码语言:javascript
复制
{:animal-type :monkey}

通常,字符串用于表示自由形式的文本.用户输入的文本,或需要显示给用户的文本。

代码语言:javascript
复制
{:animal-type :monkey
 :animal-name "Bruno the monkey"}

最后,符号通常用于指语言本身内的其他对象。例如引用一个函数,另一个数据,等等。

代码语言:javascript
复制
{:animal-type :monkey
 :animal-name "Bruno the monkey"
 :transform-fn animal/add-owner-info}
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59119700

复制
相关文章

相似问题

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