У меня есть ситуация, когда мне нужен метод, который может принимать типы:
Array[Int]
Array[Array[Int]]
Array[Array[Array[Int]]]
Array[Array[Array[Array[Int]]]]
etc...
давайте назовем этот тип RAI для «рекурсивного массива целых чисел»
def make(rai: RAI): ArrayPrinter = { ArrayPrinter(rai) }
Где ArrayPrinter — это класс, который инициализируется с помощью RAI и выполняет итерацию по всему rai (скажем, он печатает все значения в этом Array[Array[Int]])
val arrayOfArray: Array[Array[Int]] = Array(Array(1, 2), Array(3, 4))
val printer: ArrayPrinter[Array[Array[Int]]] = make(arrayOfArray)
printer.print_! // prints "1, 2, 3, 4"
Он также может возвращать исходный массив [Array[Int]] без потери информации о типе.
val arr: Array[Array[Int]] = printer.getNestedArray()
Как вы реализуете это в Scala?