```Matrix2D<T> : Cloneable, Iterable<T&gt...
# getting-started
d
Copy code
Matrix2D<T> : Cloneable, Iterable<T> {
   private val array: Array<Array<Any>>
   private val columns: Int
       get() = array.size
   private val rows: Int
       get() = array[0].size
   public val size: Int
       get() = rows * columns
constructor(rows: Int, columns: Int, default: 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 as Any } }
   }
  public override fun clone() : Matrix2D<T> {
       return Matrix2D(rows, columns, default = T)
   }