Скала бомба? (как бомба на молнии) - PullRequest
27 голосов
/ 18 декабря 2011

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

1 Ответ

32 голосов
/ 18 декабря 2011

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...