为什么Scala需要符号?

问题描述:

可能重复:
Practical examples of using symbols in Scala?为什么Scala需要符号?

什么是具有Scala的符号,如果字符串是不可变的原因是什么?在我认识的符号被用于身份很重要时,这意味着这些符号被禁用,并且具有相同字符值的两个符号将是同一个对象。但是,如果字符串是来自Java语言(它们是不可变的,并且是被实现的),那么Scala中的字符串是不是已经这样做了?

如果我有误解符号或可以提供关于他们为什么需要/用我会很乐意去学习:)

+0

Java字符串不一定是被禁用的。字符串文字是。 '“这是大写字母”.toUpperCase()'不是。 – 2012-03-01 18:36:49

我要说相反的详细信息:当只有身份是很重要的符号使用。具有相同名称的两个符号总是指相同的实例,因此可以比较这些参考而没有风险。

符号可以用作例如轻量级枚举。

+0

当然,谢谢。我混淆了这两个。我更新了这个问题 – LuckyLuke 2012-03-01 17:33:19

+2

这不是一个枚举,因为你可以错误地引入新的值(与真正的枚举或密封特征相反)。 – paradigmatic 2012-03-01 17:36:20