Veja o curso de Scala recentemente lançado pelo DataCamp: Introduction to Scala.
Scala é amplamente usado por cientistas de dados quando se trata de grandes volumes de dados usados com o Apache Spark juntos no campo de Big Data. É tanto uma linguagem orientada a objetos quanto uma linguagem funcional com muitas outras funcionalidades essenciais listadas abaixo:
- Scala é conhecida como uma linguagem estaticamente tipada, onde o tipo de dado para a variável é definido antes de seu uso. A verificação de tipo é feita no tempo de compilação em vez de no tempo de execução.
- Também é uma linguagem “Strongly Typed”, onde as variáveis são verificadas antes de realizar uma operação em seu interior.
- Também suporta inferência de tipo, onde o compilador inferência o tipo da expressão ou literais, portanto, declarar o tipo da variável é opcional.
Neste tutorial, você vai cobrir os seguintes tópicos:
- Variáveis
- Regras para a definição de Variável em Scala
- Variáveis mutáveis
- Variáveis imutáveis
- Declarações e Atribuições Múltiplas
- Escopo de Variáveis em Scala
Variáveis
Variáveis são o espaço nomeado em memória, e o compilador aloca locais reservados de acordo com o tipo de dado da variável correspondente. A variável é declarada com a seguinte sintaxe em Scala:
val or val variable_name: variable_datatype = value;
Na sintaxe acima, a variável pode ser definida de duas formas diferentes usando o operador ‘var’ ou ‘val’. Consiste em ‘variable_name’ como sua nova variável, seguida de uma barra diagonal. O tipo de dado da variável é ‘variable_datatype’ que pode ser qualquer tipo de dado válido. Depois disso, ‘value’, o símbolo é atribuído a ‘variable_name.’
Por exemplo:
val varValue: Byte = 8;
O ‘val’ é o operador para definir a variável, e ‘varValue’ é o nome da variável. É do tipo de dado ‘Byte’ e contém o valor 8. ‘Byte’ é um valor de 8 bits com sinal, que varia de 2−7 a 27−1.
O ‘variable_datatype’ acima pode ser de qualquer tipo de dado que existe em Scala, conforme listado abaixo.
- Int: É um valor de 32 bits com sinal (valor positivo ou negativo), que varia de 2−31 a 231−1.
- Byte: É um valor de 8 bits com sinal que varia de 2−7 a 27−1.
- Short: É um valor de 16 bits com sinal que varia de 2−15 a 215−1.
- Float: Pode ser de 32 bits ou 64 bits.
Da mesma forma, outros tipos de dados como Long, Char, Boolean, Char, String, Boolean, Null consistem em seus próprios intervalos, e uma explicação detalhada é dada no tutorial Beginner’s Guide to Scala. Além disso, o ‘variable_datatype’ deve começar com uma letra maiúscula, ou seja, Int contém ‘I’, o que indica que todos os tipos de dados acima são objetos em Scala.
Regras para Definir Variável em Scala
As regras e convenções para definir variáveis em Scala são as seguintes:
- O nome da variável começa com camel case minúsculo. Por exemplo, no nome da variável ‘nameOfGirl,’ contém ‘n’ como o alfabeto minúsculo. Depois, capitalize todas as letras iniciais da palavra como ‘O’ e ‘G.’
- O nome da variável não deve conter a palavra reservada ou a palavra-chave definida em Scala.
- O nome da variável pode conter o sinal de dólar (‘$’) e o sinal de sublinhado (‘_’). No entanto, outros caracteres especiais, como ‘#’,’&’, etc., não são permitidos. Além disso, o uso de sublinhado é desencorajado.
- Espaços em branco (tabulações, espaços) não são permitidos no nome da variável.
- O nome da variável deve começar com uma letra e não pode começar com um número ou outros caracteres.
Variáveis Mutáveis
Variáveis mutáveis permitem alterar os valores das variáveis mesmo após a declaração das variáveis.
A sintaxe da variável mutável é mostrada abaixo:
var variable_name : variable_datatype = value;
A sintaxe da variável mutável pode também ser definida como segue:
var variable_name = value;
O exemplo da variável mutável é mostrado abaixo:
var nameOfThing: String = "Car";
O exemplo acima contém var
como uma palavra-chave, que é usada para definir variáveis mutáveis. O nome da variável é ‘nameOfThing’. Um ponto e vírgula vem depois com o tipo de dado da variável como ‘String’. Seu valor armazenado na memória será ‘Car’.
O exemplo acima de variável mutável com a sintaxe diferente pode ser feito conforme abaixo:
var nameOfThing = "Car";
Você pode definir sua variável sem o tipo de dado da variável, como feito acima. O compilador Scala automaticamente determine que é um tipo de dado ‘String’, que é chamado de Inferência de Tipo.
Você pode facilmente mudar o valor da variável, conforme feito abaixo:
nameOfThing = "Bike"; print(nameOfThing)
O valor da variável mudará de “Car” para “Bike”. A saída será “Bike”, pois a palavra-chave ‘var’ permite que você mude o valor da variável (Fonte: Variáveis em Scala).
Variáveis imutáveis
Variáveis imutáveis são aquelas variáveis cujo valor não pode ser alterado após a criação e são declaradas usando a palavra-chave ‘val’.
A sintaxe da variável imutável é mostrada abaixo:
val variable_name : variable_data type = value;
A sintaxe da variável imutável pode também ser definida como segue:
val variable_name = value;
O exemplo da variável imutável é mostrado abaixo:
val numberOfThing: Int = 2;
O exemplo acima contém val
como uma palavra-chave para definir variáveis imutáveis e o nome da variável é ‘numberOfThing’. Ele é seguido por um ponto e vírgula com o tipo de dado da variável sendo ‘Int’ junto com o valor armazenado em memória é 2.
O exemplo acima de variável imutável com a sintaxe diferente pode ser feito conforme abaixo:
val numberOfThing = 2;
Você pode definir sua variável sem o tipo de dado da variável, como feito acima, onde o compilador Scala automaticamente consegue que seja um tipo de dado ‘Int’. O processo é chamado de Inferência de Tipo (Fonte: Variáveis em Scala).
Você não pode mudar o valor da variável conforme feito abaixo:
numberOfThing = 7;
O exemplo acima resultará em um erro como “erro: não encontrado: valor numberOfThing”, que mostra que a reatribuição de valor é impossível conforme mostrado abaixo :
Declarações Múltiplas e Atribuições
Declarações múltiplas são possíveis em Scala usando a palavra-chave ‘var’ com o nome das variáveis separadas por vírgulas e o sinal “=” com o valor para a variável.
var (x, y, z) = (5, 4.5, "Sit")
No exemplo acima, você pode ver que todas as variáveis x, y e z são atribuídas aos valores 5, 4.5 e “Sit” respectivamente conforme segue.
As atribuições múltiplas são possíveis em Scala em uma linha usando a palavra-chave ‘val’ com o nome das variáveis separadas por vírgulas e o sinal “=” com o valor para a variável.
val a, b, c = 1;
No exemplo acima, você pode ver que todas as variáveis a, b e c são atribuídas aos valores 1 conforme segue.
Escopo de uma Variável
A escopo é a visibilidade das variáveis que têm sua duração de vida dentro dos blocos especificados do código. A variável pode ser definida no Escopo Local ou Global. Por exemplo:
var globalVar = 10 def sub(){ var difference = 9-4; } print(difference)//Erro print(globalVar)//Válido
No código acima, a variável ‘difference’ está no Escopo Local, onde é declarada dentro do método ‘sub’, e a operação de subtração dará resultados válidos, mas imprimir o valor fora do método ‘sub’ causará um erro. Também existe um Escopo Global, onde a variável ‘globalVar’ pode ser acessada em qualquer lugar do programa, e qualquer operação pode ser realizada nela.
Existem três tipos de escopo para variáveis em Scala (Fonte: Scala – Variáveis):
- Variáveis locais
- Campos
- Parâmetros de método
Variáveis Locais
Variáveis locais são variáveis mutáveis ou imutáveis que são declaradas dentro de um método e só podem ser acessadas dentro de métodos, mas não fora deles.
Você pode ver o exemplo simples abaixo para saber sobre Variáveis Locais:
class Perimeter { def triangle() { var side1 = 10; var side2 = 20; var side3 = 30; var total = side1+side2+side3; print("Perimeter of the triangle is: " + total); } } object Test { def main(args:Array[String]) { val p1 = new Perimeter() p1.triangle() } }
defined class Perimeter defined object Test
O código acima fornece o resultado:
O perímetro do triângulo é: 60
O programa acima contém uma classe chamada ‘Perimeter’ e um objeto para ser ‘Test’, onde há um método chamado ‘triangle’ tendo três variáveis mutáveis como side1, side2, side3. O cálculo e a impressão do resultado serão feitos dentro do método, o que dará a saída correta.
Campos
Essas variáveis definidas dentro da classe são conhecidas como variáveis de campo, que podem ser de qualquer tipo, seja mutável ou imutável. O modificador de acesso será automaticamente público se a variável for declarada dentro da classe, mas não deve ser definida dentro de qualquer método onde a variável seja acessível em qualquer lugar do programa. No entanto, uma variável privada pode ser acessada dentro da classe definida, mas não pode ser acessada fora do escopo da classe ou até mesmo no objeto também.
class FieldExample { var value1 = 10; private var value2 = 30; def operation() { println("Value of value1:"+value1) } println("Value of value2: "+value2); } object Demo { def Main(args:Array[String]) { val obj = new FieldExample() obj.operation() print(obj.value1)//Valid print(obj.value2) } }
defined class FieldExample defined object Demo
O código acima fornece o resultado:
Valor de value2: 30
Valor de value1:10
10
O programa acima contém uma classe chamada ‘FieldExample’, objeto a ser ‘Demo’ e um método como ‘operation’. A variável pública value1 pode ser acessada usando a notação de ponto e o valor é impresso como 10. A variável privada value2 será 30, onde acessar essa variável e imprimir causará um erro.
Parâmetros de Método
Os parâmetros de método são as variáveis que aceitam o valor quando o método está sendo chamado, e a variável deve ser mutável, que é definida usando a palavra-chave ‘val’. A variável também pode ser acessada fora do método quando há uma referência feita a ela.
Você pode ver o exemplo simples abaixo para saber sobre Parâmetros de Método:
class Triangle { def calculate(height: Int, width: Int) { var result = 0.5*(height+width); println("Area of triangle is: " + result); } } object Area { def main(args:Array[String]) { val a = new Triangle() a.calculate(4,5); } }
defined class Triangle defined object Area
O código acima fornece o resultado:
Área de um triângulo é: 4.5
O programa acima contém uma classe chamada ‘Triangle.’ Inclui um método chamado ‘calculate’ com dois parâmetros de método altura e largura. Os valores inteiros 4 e 5 são passados quando ‘calculate’ é chamado usando a instância de objeto a.
Conclusão
Parabéns, você chegou ao final deste tutorial!
Neste tutorial, você abordou sobre variáveis em Scala, regras para definir variáveis, diferentes tipos de variáveis com declarações e atribuições múltiplas, além do escopo da variável nele.
Se você gostaria de aprender mais sobre Scala, tome o curso de Introdução a Scala da DataCamp.
Source:
https://www.datacamp.com/tutorial/variables-in-scala