Подтвердить что ты не робот

Scala бомба? (например, молнии)

Извините смешное название, я использую его по аналогии с " zip bomb". Возможно ли создать исходный файл scala, который при компиляции будет производить большое количество файлов классов (или очень большой файл одного класса)? Есть ли способ увеличить размер файлов классов быстрее, чем линейно, с размером исходного файла?

4b9b3361

Ответ 1

Специализация по своей природе экспоненциальна в количестве специализированных параметров типа.

class Huge[@specialized A, @specialized B, @specialized C](
  val a: A, val b: B, val c: C
) {} // 730 files, 2.9 MB

class Gigantic[@specialized A, @specialized B, @specialized C, @specialized D](
  val a: A, val b: B, val c: C, val d: D
) {} // 6562 files, 26 MB

Совпадение шаблонов также может включать много дублирования кода для сложных случаев (хотя мне трудно точно предсказать, когда это произойдет).