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.