Ответ 1
Смотрите https://github.com/scala/scala/blob/2.10.1/src/library/scala/Function1.scala#L8, где говорится
// GENERATED CODE: DO NOT EDIT. See scala.Function0 for timestamp.
Код генерируется тем же генератором для Function0
через Function22
. Как-то, когда он идет на Function5
, вы начинаете использовать self
:
self.apply(x1, x2, x3, x4, x5)).curried
Таким образом, я подозреваю, что было легче иметь self =>
, всегда включаемый в шаблон генератора.
Вот commit, который добавляет самооценку. Сообщение commit на самом деле объясняет, почему он делает что-то другое при n >= 5, я цитирую:
ФункцияN, где N > 4, много меньше классов создаются статически на за счет создания большего количества объектов динамически (что кажется разумным учитывая, насколько распространены такие функции, вероятно, будут). Это также позволяет curry в FunctionN для N > 8 без пробега в длину имени файла ограничение.