Scala - Variáveis

As variáveis ​​nada mais são do que locais de memória reservados para armazenar valores. Isso significa que, ao criar uma variável, você reserva algum espaço na memória.

Com base no tipo de dados de uma variável, o compilador aloca memória e decide o que pode ser armazenado na memória reservada. Portanto, ao atribuir diferentes tipos de dados a variáveis, você pode armazenar números inteiros, decimais ou caracteres nessas variáveis.

Declaração de Variável

Scala tem uma sintaxe diferente para declarar variáveis. Eles podem ser definidos como um valor, ou seja, uma constante ou uma variável. Aqui, myVar é declarado usando a palavra-chave var. É uma variável que pode mudar de valor e é chamadamutable variable. A seguir está a sintaxe para definir uma variável usandovar palavra-chave -

Sintaxe

var myVar : String = "Foo"

Aqui, myVal é declarado usando a palavra-chave val. Isso significa que é uma variável que não pode ser alterada e é chamadaimmutable variable. A seguir está a sintaxe para definir uma variável usando a palavra-chave val -

Sintaxe

val myVal : String = "Foo"

Tipos de dados variáveis

O tipo de uma variável é especificado após o nome da variável e antes do sinal de igual. Você pode definir qualquer tipo de variável Scala mencionando seu tipo de dados da seguinte forma -

Sintaxe

val or val VariableName : DataType = [Initial Value]

Se você não atribuir nenhum valor inicial a uma variável, ele é válido da seguinte forma -

Sintaxe

var myVar :Int;
val myVal :String;

Inferência de tipo de variável

Quando você atribui um valor inicial a uma variável, o compilador Scala pode descobrir o tipo da variável com base no valor atribuído a ela. Isso é chamado de inferência de tipo de variável. Portanto, você pode escrever essas declarações de variáveis ​​assim -

Sintaxe

var myVar = 10;
val myVal = "Hello, Scala!";

Aqui, por padrão, myVar será do tipo Int e myVal se tornará a variável do tipo String.

Múltiplas atribuições

Scala oferece suporte a várias atribuições. Se um bloco de código ou método retornar uma Tupla (Tuple- Contém coleção de objetos de diferentes tipos), a tupla pode ser atribuída a uma variável val. [Note - Estudaremos tuplas nos capítulos subsequentes.]

Sintaxe

val (myVar1: Int, myVar2: String) = Pair(40, "Foo")

E a inferência de tipo acerta -

Sintaxe

val (myVar1, myVar2) = Pair(40, "Foo")

Programa Exemplo

A seguir está um programa de exemplo que explica o processo de declaração de variável no Scala. Este programa declara quatro variáveis ​​- duas variáveis ​​são definidas com a declaração de tipo e as duas restantes sem declaração de tipo.

Exemplo

object Demo {
   def main(args: Array[String]) {
      var myVar :Int = 10;
      val myVal :String = "Hello Scala with datatype declaration.";
      var myVar1 = 20;
      val myVal1 = "Hello Scala new without datatype declaration.";
      
      println(myVar); println(myVal); println(myVar1); 
      println(myVal1);
   }
}

Salve o programa acima em Demo.scala. Os seguintes comandos são usados ​​para compilar e executar este programa.

Comando

\>scalac Demo.scala
\>scala Demo

Resultado

10
Hello Scala with datatype declaration.
20
Hello Scala without datatype declaration.

Escopo Variável

As variáveis ​​no Scala podem ter três escopos diferentes, dependendo do local onde estão sendo usadas. Eles podem existir como campos, como parâmetros de método e como variáveis ​​locais. Abaixo estão os detalhes sobre cada tipo de escopo.

Campos

Os campos são variáveis ​​que pertencem a um objeto. Os campos são acessíveis de dentro de todos os métodos do objeto. Os campos também podem ser acessíveis fora do objeto, dependendo de quais modificadores de acesso o campo é declarado. Os campos de objeto podem ser tipos mutáveis ​​e imutáveis ​​e podem ser definidos usando qualquervar ou val.

Parâmetros do Método

Os parâmetros do método são variáveis, usadas para passar o valor dentro de um método, quando o método é chamado. Os parâmetros do método são acessíveis apenas de dentro do método, mas os objetos passados ​​podem ser acessíveis de fora, se você tiver uma referência ao objeto de fora do método. Os parâmetros do método são sempre imutáveis, definidos porval palavra-chave.

Variáveis ​​Locais

Variáveis ​​locais são variáveis ​​declaradas dentro de um método. Variáveis ​​locais são acessíveis apenas de dentro do método, mas os objetos que você cria podem escapar do método se você retorná-los do método. Variáveis ​​locais podem ser tipos mutáveis ​​e imutáveis ​​e podem ser definidas usando qualquervar ou val.