Руководство по Scala. Массивы.

В данной статье мы рассмотрим массивы в языке программирования Scala.

Массивы в Scala – это структура данных фиксированного размера, которая хранит коллекцию однотипных элементов.

Для объявления массива мы используем запись следующего вида:


var stringArray[String] = new Array[String](10)

ИЛИ

var stringArray = new Array[String](10);

В данном случае, мы создаем массив строк (String), который состоит из 10 элементов.

Для понимания того, как это работает на практике, рассмотрим простой пример:


package net.proselyte.scalatutorial.arrays

/**
  * Simple Scala class that demonstrates arrays in action.
  *
  * @author Eugene Suleimanov
  */

object ArrayDemo {
  def main(args: Array[String]) {
    val integerArray = Array(10, 20, 30, 40, 50);

    println("integerArray: ");
    for (arrayElement <- integerArray) {
      print(arrayElement + " ");
    }

    println();

    var integerArrayTotalSum = 0;

    for (arrayElement <- integerArray) {
      integerArrayTotalSum += arrayElement;
    }

    println("Total sum of array elements is: " + integerArrayTotalSum);
  }
}

В результате выполнения данной программы мы получим следующий вывод в консоль:


integerArray: 
10 20 30 40 50 
Total sum of array elements is: 150

Process finished with exit code 0

Так же, как и в Java, в языке программирования Scala у нас есть возможность создавать многомерные массивы.
Для создания данного вида массива используется запись следующего вида:


var twoDimensionalArray = ofDim[String](2,2);

Здесь мы создали 2-мерный массив строк.

Рассмотрим следующий пример:


package net.proselyte.scalatutorial.arrays

import Array._

/**
  * Simple Scala class that demonstrates multi-dimensional array in action.
  *
  * @author Eugene Suleimanov
  */

object MultiDimensionalArrayDemo {
  def main(args: Array[String]) {
    var twoDimensionalArray = ofDim[String](5, 5);

    println("Filling twoDimensionalArray...")
    for(i <- 0 to 4){
      for(j <- 0 to 4){
        twoDimensionalArray(i)(j) = "*";
      }
    }

    println("twoDimensionalArray:")

    for(i <- 0 to 4){
      for(j <- 0 to 4){
        print(twoDimensionalArray(i)(j) + " ");
      }
      println()
    }
  }
}

В результате выполнения данной программы мы получим следующий вывод в консоль:


Filling twoDimensionalArray...
twoDimensionalArray:
* * * * * 
* * * * * 
* * * * * 
* * * * * 
* * * * * 

Process finished with exit code 0

Кроме того, в Scala предусмотрен механизм для слияния массивов. Рассмотрим следующий пример:


package net.proselyte.scalatutorial.arrays

import Array._

/**
  * Simple Scala class that demonstrates array concatenation in action.
  *
  * @author Eugene Suleimanov
  */

object ArrayConcatenationDemo {
  def main(args: Array[String]) {
    val integerArrayOne = Array(2, 4, 6, 8);
    val integerArrayTwo = Array(1, 3, 5, 7);

    println("integerArrayOne: ")
    for (arrayElement <- integerArrayOne) {
      print(arrayElement + " ");
    }

    println();

    println("integerArrayTwo: ")
    for (arrayElement <- integerArrayTwo) {
      print(arrayElement + " ");
    }

    println();

    val integerConcatenatedArray = concat(integerArrayOne, integerArrayTwo);

    println("integerConcatenatedArray: ")
    for (arrayElement <- integerConcatenatedArray) {
      print(arrayElement + " ");
    }

    println()

    val sortedIntegerConcatenatedArray = integerConcatenatedArray.sorted;

    println("sortedIntegerConcatenatedArray: ")
    for (arrayElement <- sortedIntegerConcatenatedArray) {
      print(arrayElement + " ");
    }
  }
}

Результат выполнения данной программы будет следующим:


integerArrayOne: 
2 4 6 8 
integerArrayTwo: 
1 3 5 7 
integerConcatenatedArray: 
2 4 6 8 1 3 5 7 
sortedIntegerConcatenatedArray: 
1 2 3 4 5 6 7 8 
Process finished with exit code 0

Кроме того, в Scala разработан ряд методов для работы с массивами, с которыми вы можете ознакомиться в документации.

На этом мы заканчиваем изучение массивов в Scala.
В следующей статье мы рассмотрим функции в данном языке программирования.