2015-03-26 4 views
3

У меня есть игрушечный класс с типом T.Доступ к типу в Scala

class A { type T = Int } 

Как я могу получить доступ к члену моего типа. например получить тип или изменить его.

val a = new A 
a.T = String //error: value T is not a member of A 

С T мой член, почему у меня нет доступа?

ответ

3

Элементы типа больше похожи на общие параметры, чем обычные члены класса. Как и общий параметр, вы не можете переназначить параметр типа или получить доступ к нему из экземпляра класса. Подробнее о членах типа here, а также о различии между абстрактными типами и общими параметрами here.

+0

В случае с ФП в это не является абстрактным, он крепится к 'Int'. Просто члены типа не могут быть доступны или переназначены как значения. –

+0

Вы правы, я изменил формулировку –

1

Вы не можете получить доступ к нему в качестве значения, но вы можете получить доступ к нему в качестве типа:

scala> class A { type T = Int } 
scala> val a = new A 
scala> val someInt: a.T = 5 
someInt: a.T = 5 
Смежные вопросы