2016-12-17 2 views
2

Скала Docs на object комментарии:Case Класс без параметров

В самом деле, случай класс без параметров типа по умолчанию будет создать одноэлементный объект с тем же именем, с Function* черты реализованной.

Что означает with a Function* trait implemented?

+1

'Функция *', что означает любые функции 'Function1' или' Function2', я предполагаю, что –

ответ

5

* - это мощность класса корпуса; то есть количество аргументов, которое требуется.

Собираем вместе:

case class Foo(a: Int, b: Long) 

Представляет код, который выглядит следующим образом:

class Foo(val a: Int, val b: Long) 

object Foo extends Function2[Int,Long,Foo] { 
    def apply(a: Int, b: Long): Foo = new Foo(a,b) 
} 

Приведенный выше код не является полным, корпус класса создает много других вспомогательных функций, таких как красивая печать, исключить его для сопоставления шаблонов, тестов на структурное равенство и т. д.

+0

Вопрос задал ab out no-parameter case, хотя –

+0

Да, если класс case похож на «класс case Foo [A, B] (a: A, b: B)», тогда все становится немного сложнее. Я считаю, что там есть параметры, они означают параметры типа, а не значения аргументов. – marios

+0

Итак, 'case class A()' расширяет 'Function0 [A]'? –

Смежные вопросы