当前位置:  开发笔记 > 编程语言 > 正文

Scala中符号文字的一些示例用例是什么?

如何解决《Scala中符号文字的一些示例用例是什么?》经验,为你挑选了2个好方法。

我从Scala上读到的内容并没有立即清楚地使用符号文字.有人愿意分享一些现实世界的用途吗?

符号文字是否包含特定的Java习语?哪些语言有相似的结构?我来自Python背景,不确定那种语言有什么类似的东西.

什么会激励我使用'HelloWorld vs"HelloWorld"?

谢谢



1> Alexey Roman..:

在Java术语中,符号是实习字符串.这意味着,例如,引用相等比较(eq在Scala和==Java中)提供与正常相等比较(==在Scala和equalsJava中)相同的结果:'abcd eq 'abcd将返回true,而"abcd" eq "abcd"可能不会,这取决于JVM的奇思妙想(嗯,它应该对于文字,但不是一般动态创建的字符串).

其他使用符号的语言是Lisp(使用'abcd类似Scala),Ruby(:abcd),Erlang和Prolog(abcd;它们被称为原子而不是符号).

当我不关心字符串的结构时,我会使用符号,并将其纯粹用作某事物的名称.例如,如果我有一个表示CD的数据库表,其中包含一个名为"price"的列,我不关心"price"中的第二个字符是"r",还是关于连接列名; 因此,Scala中的数据库库可以合理地使用表和列名称的符号.


可能值得记住的是,Scala中的==执行.equals事情,所以真正的区别在于使用引用相等的"eq"方法.然而,一个奖励是符号之间的比较非常便宜.
@Elazar:这是真的吗?我的印象是Java只实现了文字(即几乎所有字符串都是简单的例子,而且几乎没有生产软件中的字符串).已经说过符号的用例通常是字面值(我怀疑你经常从头开始构建它们),所以可以说你得到的主要优点就是更具描述性的类型.
所以,"你好,世界!" 是一个连续的字符集合,而'helloWorld是人友好的价值而不是14392.

2> Saem..:

如果您在代码中使用简单的字符串表示方法名称,那可能会传递给您,那么您并没有完全正确地传达信息.这是一种数据/代码边界问题,绘制线并不总是那么容易,但是如果我们说在那个例子中那些方法名称的代码多于它们的数据,那么我们想要一些东西来清楚地识别.

Symbol Literal开始发挥作用,它可以清楚地区分任何旧的字符串数据与代码中使用的构造.它只是你想要指出的地方,这不仅仅是一些字符串数据,实际上在某种程度上是代码的一部分.像IDE一样的想法会以不同的方式强调它,并且考虑到工具,你可以对它们进行重构,而不是进行文本搜索/替换.

这个链接很好地讨论了它.

推荐阅读
mobiledu2402851173
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有