2013-11-22 4 views
3

Я не знаком с scala. У меня возникли проблемы при попытке вернуть тип объекта.Возвращаясь «объект» в scala

Вот код.

Это показывает «ошибка: не найден: тип А»

object A{} 

object B { 
    def getInstance() : A = { 
    return A 
    } 
} 

Если я подобного рода вещи с экземпляром класса, это обыкновение показывать любую проблему.

class A{} 

object B { 
    def getInstance() : A = { 
    return new A 
    } 
} 

Насколько я знаю, тип объекта - это один экземпляр класса. Что мне здесь не хватает?

ответ

4

Компилятор жалуется, что не может найти тип А потому, что в вашем случае это имя объекта не тип, используйте A.type для обозначения типа, например:

object A 

object B { 
    def getInstance: A.type = A 
} 
+0

Только бы как добавить, что с типом вывода вы могли бы фактически опустить тип возврата и писать просто 'def getInstance = A' – NIA

3

Потому что object is singleton is не определяет type, а определяет это значение.

Если вы посмотрите на эквивалент Java, используя Scala object производит:

A$ class // 
A$.MODULE$ // singleton instance definition 

type, однако, в масках и могут быть доступны через A.type.

Использование return также не требуется в Scala. Последняя позиция оператора в блоке автоматически интерпретируется как значение return.

class A{} 

object B { 
    def getInstance() : A = new A 
} 
Смежные вопросы