2010-12-14 3 views

答えて

5

これはバグではありません。一文字の先頭はScalaのSymbolを意味します。私はちょうどそれを知っていた。 すみません。私はScalaの初心者です。

5

すでに森が回答しているので、'b'の値は文字ですが、'bSymbol(有効なScala識別子でもある標準文字列)になります。

タイプはAのリストに追加する場合、Aというインスタンスの追加に制限されません。しかし、A以外のものをリストに追加すると、より一般的なリストが結果として得られます。例:あなたはこのような何かを行うと

class A {} 
class B extends A {} 
class C extends A {} 

val list1:List[B] = List(new B(), new B(), new B()) 
val list2:List[A] = new C() :: list1 

、Scalaは(上記の例では、これはAである)、より一般的なスーパータイプを見つけ、そのタイプのリストを返します。これは、タイプListのリストが不変であり、リストに要素を追加すると、実際には新しいリストを作成し、古いリストを変更しないままにしておくことができるためです。新しいリストは、元のリストよりも一般的なタイプのリストにすることができます。

CharSymbolの唯一の一般的なスーパータイプがAnyであるため、あなたのケースでは、誤ってこの機能を突き抜けました。

関連する問題