I Klasse Matrix2D mit den folgenden Eigenschaften erstellen möchten:Wie Konstruktor Gattung Klasse Konstruktor aufzurufen
- Klasse sollte
- sollten in der Lage sein zu akzeptieren, wie viele Arten wie möglich allgemein sein (idealerweise alle)
- „Default“ Konstruktor sollten alle Zellen mit Standardtyp initialisieren Werte
- korrekt Fall behandeln, wenn Typ nicht Standardkonstruktors hat (wahrscheinlich Standardparameter löst dieses Problem)
Wie kann ich das tun? Dies ist meine Skizze:
class Matrix2D<T> : Cloneable, Iterable<T> {
private val array: Array<Array<T>>
// Call default T() constructor if it exists
// Have ability to pass another default value of type
constructor(rows: Int, columns: Int, default: T = T()) {
when {
rows < 1 -> throw MatrixDimensionException("Number of rows should >= 1")
columns < 1 -> throw MatrixDimensionException("Number of columns should be >= 1")
}
array = Array(rows, { Array(columns, { default }) })
}
}
Das sieht aus wie wenn wir verwenden 'Any' wir nicht brauchen zweiten Konstruktor: Konstruktor (Zeilen: Int, Spalten: Int, Test: T) { wenn { Reihen < 1 -> Wurf MatrixDimensionException (" Anzahl der Zeilen sollte> = 1 ") Spalten < 1 -> Wurf MatrixDimensionException (" Anzahl der Spalten sollte> = 1" sein) } Array = Array (Zeilen) {Array (Spalten) {Test wie Any}}} ist es nicht? – likern
Das ist nur ein Convenience-Konstruktor, den Sie entfernen können. Es ist eigentlich nicht mit 'Any' verbunden. – Michael