Scala é amplamente usado por cientistas de dados para lidar com grandes volumes de dados em conjunto com o Apache Spark no universo de Big Data. É uma linguagem de programação orientada a objetos e funcional, com vários recursos essenciais, como:
Scala é uma linguagem de tipagem estática: o tipo de dado da variável é definido antes do uso. A checagem de tipos acontece em tempo de compilação, não em tempo de execução.
Também é "fortemente tipada": as variáveis são verificadas antes de você realizar operações com elas.
Suporta inferência de tipos: o compilador infere o tipo a partir da expressão ou dos literais, então declarar o tipo da variável é opcional.
Neste tutorial, você vai ver os seguintes tópicos:
Variáveis são espaços nomeados na memória; o compilador reserva o local conforme o tipo de dado da variável correspondente. Em Scala, a declaração segue a sintaxe:
val or val variable_name: variable_datatype = value;Tecnologia
Na sintaxe acima, a variável pode ser definida de duas formas, usando as palavras-chave 'var' ou 'val'. Ela inclui 'variable_name' como o nome da sua nova variável, seguido de dois-pontos. O tipo da variável é 'variable_datatype', que pode ser qualquer tipo válido. Em seguida, o 'value' é atribuído a 'variable_name'.
'val' é a palavra-chave para definir a variável, e 'varValue' é o nome. O tipo é 'Byte' e o valor é 8. 'Byte' é um valor assinado de 8 bits, que varia de 2−7 a 27−1.
O 'variable_datatype' pode ser qualquer tipo existente em Scala, como:
Int: inteiro assinado de 32 bits (positivo ou negativo), com intervalo de 2−31 a 231−1.
Byte: valor assinado de 8 bits, com intervalo de 2−7 a 27−1.
Short: valor assinado de 16 bits, com intervalo de 2−15 a 215−1.
Float: pode ser 32 bits ou 64 bits.
Da mesma forma, outros tipos como Long, Char, Boolean, String, Null têm seus próprios intervalos e particularidades. Uma explicação detalhada está no tutorial Beginner’s Guide to Scala. Além disso, 'variable_datatype' começa com letra maiúscula (por exemplo, Int com 'I'), indicando que todos esses tipos são objetos em Scala.
Regras para definir variáveis em Scala
As regras e convenções para definir variáveis em Scala são:
Use lower camel case para nomes de variáveis. Por exemplo, em 'nameOfGirl', o 'n' inicial é minúsculo; depois, capitalize a primeira letra de cada palavra, como 'O' e 'G'.
Não use palavras reservadas ou keywords de Scala como nome de variável.
O nome da variável pode conter cifrão ('$') e sublinhado ('_'). Outros caracteres especiais como '#', '&' etc. não são permitidos. O uso de sublinhado é desencorajado.
Não use espaço em branco (tabs, espaços) no nome da variável.
O nome da variável deve começar com uma letra; não pode começar com número ou outros caracteres.
Variáveis mutáveis
Variáveis mutáveis permitem alterar seus valores mesmo depois da declaração.
No exemplo acima, var é a keyword para variáveis mutáveis. O nome é 'nameOfThing'. Em seguida vem os dois-pontos e o tipo 'String'. O valor armazenado na memória será 'Car'.
Você pode definir a variável sem explicitar o tipo, como acima. O compilador de Scala determina automaticamente que é do tipo 'String' — esse recurso é chamado de inferência de tipos.
O valor mudará de "Car" para "Bike". A saída será "Bike", porque a palavra-chave 'var' permite reatribuir o valor da variável (Fonte: Variables in Scala).
Variáveis imutáveis
Variáveis imutáveis são aquelas cujo valor não pode ser alterado após a criação e são declaradas com a palavra-chave 'val'.
A sintaxe de uma variável imutável é:
val variable_name : variable_data type = value;Tecnologia
Você pode definir a variável sem explicitar o tipo; o compilador de Scala infere que é um 'Int'. Esse processo é a inferência de tipos (Fonte: Variables in Scala).
Você não pode alterar o valor da variável, como abaixo:
O exemplo acima resultará em um erro como "error: not found: value numberOfThing", mostrando que a reatribuição não é possível, conforme abaixo:
Declarações e atribuições múltiplas
Declarações múltiplas são possíveis em Scala usando a palavra-chave 'var', com os nomes de variáveis separados por vírgulas, e o sinal "=" com os respectivos valores.
No exemplo acima, as variáveis a, b e c recebem todas o valor 1.
Escopo de uma variável
Escopo é a visibilidade das variáveis, que têm seu tempo de vida dentro dos blocos de código onde são declaradas. A variável pode estar em escopo local ou global. Exemplo:
var globalVar =10
def sub(){var difference =9-4;}print(difference)//Errorprint(globalVar)//ValidTecnologia
No código acima, 'difference' está no escopo local, pois é declarada dentro do método 'sub'; a operação de subtração funciona, mas imprimir seu valor fora do método gera erro. Já a variável global 'globalVar' pode ser acessada em qualquer parte do programa.
Há três tipos de escopo para variáveis em Scala (Fonte: Scala- Variables):
Variáveis locais
Fields
Parâmetros de método
Variáveis locais
Variáveis locais (mutáveis ou imutáveis) são declaradas dentro de um método e só são acessíveis dentro dele.
Veja um exemplo simples de variáveis locais:
classPerimeter{deftriangle(){
var side1 =10;
var side2 =20;
var side3 =30;
var total = side1+side2+side3;print("Perimeter of the triangle is: "+ total);}}object Test
{defmain(args:Array[String]){
val p1 = new Perimeter()
p1.triangle()}}Tecnologia
defined classPerimeter
defined object Test
Tecnologia
O código acima gera:
The perimeter of the triangle is: 60
O programa tem uma classe 'Perimeter' e um objeto 'Test'. O método triangle possui três variáveis mutáveis: side1, side2 e side3. O cálculo e a impressão do resultado são feitos dentro do método, gerando a saída correta.
Fields
Variáveis definidas dentro da classe são chamadas de fields e podem ser mutáveis ou imutáveis. Se a variável é declarada diretamente na classe (e não dentro de um método), o modificador de acesso padrão é público, e ela pode ser acessada em qualquer lugar do programa. Já uma variável privada pode ser acessada dentro da própria classe, mas não fora do escopo da classe (nem pelo objeto).
classFieldExample{
var value1 =10;
private var value2 =30;defoperation(){
println("Value of value1:"+value1)}
println("Value of value2: "+value2);}object Demo
{defMain(args:Array[String]){
val obj = new FieldExample()
obj.operation()print(obj.value1)//Valid
print(obj.value2)}}Tecnologia
defined classFieldExample
defined object Demo
Tecnologia
O código acima gera:
Value of value2: 30 Value of value1:10 10
O programa tem a classe 'FieldExample', o objeto 'Demo' e o método 'operation'. A variável pública value1 pode ser acessada por notação de ponto e imprime 10. Já a variável privada value2 vale 30; tentar acessá-la e imprimi-la fora da classe causará erro.
Parâmetros de método
Parâmetros de método são variáveis que recebem valores quando o método é chamado; por padrão, eles são imutáveis (definidos com 'val'). Esses valores podem ser usados dentro do método e, quando há referência, podem influenciar o acesso fora do método.
Veja um exemplo simples de parâmetros de método:
classTriangle{defcalculate(height: Int, width: Int){
var result =0.5*(height+width);
println("Area of triangle is: "+ result);}}object Area
{defmain(args:Array[String]){
val a = new Triangle()
a.calculate(4,5);}}Tecnologia
defined classTriangle
defined object Area
Tecnologia
O código acima gera:
Area of triangle is: 4.5
O programa contém a classe 'Triangle' com o método 'calculate', que recebe dois parâmetros: height e width. Os valores inteiros 4 e 5 são passados quando 'calculate' é chamado a partir da instância 'a'.
Conclusão
Parabéns por chegar ao final deste tutorial!
Nele, você viu variáveis em Scala, regras para defini-las, diferentes tipos, como fazer declarações e atribuições múltiplas e como funciona o escopo.
Se quiser aprender mais sobre Scala, faça o curso Introduction to Scala da DataCamp.
Aprenda o que são escopos de variáveis e familiarize-se com a regra “LEGB”. Você também vai lidar com cenários em que poderá ver as palavras-chave globais e não locais em ação.
O operador de morsa do Python := permite que você atribua um valor a uma variável dentro de uma expressão, combinando atribuição e uso em uma única etapa.
Explore o match-case do Python: um guia sobre sua sintaxe, aplicativos em ciência de dados, ML e uma análise comparativa com o switch-case tradicional.
Confira o curso recém-lançado da DataCamp sobre Scala: Introduction to Scala.
Scala é amplamente usado por cientistas de dados para lidar com grandes volumes de dados em conjunto com o Apache Spark no universo de Big Data. É uma linguagem de programação orientada a objetos e funcional, com vários recursos essenciais, como:
Neste tutorial, você vai ver os seguintes tópicos:
Variáveis
Variáveis são espaços nomeados na memória; o compilador reserva o local conforme o tipo de dado da variável correspondente. Em Scala, a declaração segue a sintaxe:
Na sintaxe acima, a variável pode ser definida de duas formas, usando as palavras-chave 'var' ou 'val'. Ela inclui 'variable_name' como o nome da sua nova variável, seguido de dois-pontos. O tipo da variável é 'variable_datatype', que pode ser qualquer tipo válido. Em seguida, o 'value' é atribuído a 'variable_name'.
Por exemplo:
'val' é a palavra-chave para definir a variável, e 'varValue' é o nome. O tipo é 'Byte' e o valor é 8. 'Byte' é um valor assinado de 8 bits, que varia de 2−7 a 27−1.
O 'variable_datatype' pode ser qualquer tipo existente em Scala, como:
Da mesma forma, outros tipos como Long, Char, Boolean, String, Null têm seus próprios intervalos e particularidades. Uma explicação detalhada está no tutorial Beginner’s Guide to Scala. Além disso, 'variable_datatype' começa com letra maiúscula (por exemplo, Int com 'I'), indicando que todos esses tipos são objetos em Scala.
Regras para definir variáveis em Scala
As regras e convenções para definir variáveis em Scala são:
Variáveis mutáveis
Variáveis mutáveis permitem alterar seus valores mesmo depois da declaração.
A sintaxe de uma variável mutável é:
Ela também pode ser definida assim:
Exemplo de variável mutável:
No exemplo acima,
varé a keyword para variáveis mutáveis. O nome é 'nameOfThing'. Em seguida vem os dois-pontos e o tipo 'String'. O valor armazenado na memória será 'Car'.O mesmo exemplo, com sintaxe alternativa:
Você pode definir a variável sem explicitar o tipo, como acima. O compilador de Scala determina automaticamente que é do tipo 'String' — esse recurso é chamado de inferência de tipos.
Você pode alterar o valor facilmente, assim:
O valor mudará de "Car" para "Bike". A saída será "Bike", porque a palavra-chave 'var' permite reatribuir o valor da variável (Fonte: Variables in Scala).
Variáveis imutáveis
Variáveis imutáveis são aquelas cujo valor não pode ser alterado após a criação e são declaradas com a palavra-chave 'val'.
A sintaxe de uma variável imutável é:
Ela também pode ser definida assim:
Exemplo de variável imutável:
No exemplo acima,
valdefine uma variável imutável chamada 'numberOfThing'. Depois do dois-pontos, o tipo é 'Int', e o valor armazenado é 2.O mesmo exemplo, com sintaxe alternativa:
Você pode definir a variável sem explicitar o tipo; o compilador de Scala infere que é um 'Int'. Esse processo é a inferência de tipos (Fonte: Variables in Scala).
Você não pode alterar o valor da variável, como abaixo:
O exemplo acima resultará em um erro como "error: not found: value numberOfThing", mostrando que a reatribuição não é possível, conforme abaixo:
Declarações e atribuições múltiplas
Declarações múltiplas são possíveis em Scala usando a palavra-chave 'var', com os nomes de variáveis separados por vírgulas, e o sinal "=" com os respectivos valores.
No exemplo acima, as variáveis x, y e z recebem os valores 5, 4.5 e "Sit", respectivamente.
Também é possível fazer atribuições múltiplas em uma linha usando 'val', com os nomes separados por vírgulas e o "=" com o valor.
No exemplo acima, as variáveis a, b e c recebem todas o valor 1.
Escopo de uma variável
Escopo é a visibilidade das variáveis, que têm seu tempo de vida dentro dos blocos de código onde são declaradas. A variável pode estar em escopo local ou global. Exemplo:
No código acima, 'difference' está no escopo local, pois é declarada dentro do método 'sub'; a operação de subtração funciona, mas imprimir seu valor fora do método gera erro. Já a variável global 'globalVar' pode ser acessada em qualquer parte do programa.
Há três tipos de escopo para variáveis em Scala (Fonte: Scala- Variables):
Variáveis locais
Variáveis locais (mutáveis ou imutáveis) são declaradas dentro de um método e só são acessíveis dentro dele.
Veja um exemplo simples de variáveis locais:
O código acima gera:
The perimeter of the triangle is: 60
O programa tem uma classe 'Perimeter' e um objeto 'Test'. O método triangle possui três variáveis mutáveis: side1, side2 e side3. O cálculo e a impressão do resultado são feitos dentro do método, gerando a saída correta.
Fields
Variáveis definidas dentro da classe são chamadas de fields e podem ser mutáveis ou imutáveis. Se a variável é declarada diretamente na classe (e não dentro de um método), o modificador de acesso padrão é público, e ela pode ser acessada em qualquer lugar do programa. Já uma variável privada pode ser acessada dentro da própria classe, mas não fora do escopo da classe (nem pelo objeto).
O código acima gera:
Value of value2: 30
Value of value1:10
10
O programa tem a classe 'FieldExample', o objeto 'Demo' e o método 'operation'. A variável pública value1 pode ser acessada por notação de ponto e imprime 10. Já a variável privada value2 vale 30; tentar acessá-la e imprimi-la fora da classe causará erro.
Parâmetros de método
Parâmetros de método são variáveis que recebem valores quando o método é chamado; por padrão, eles são imutáveis (definidos com 'val'). Esses valores podem ser usados dentro do método e, quando há referência, podem influenciar o acesso fora do método.
Veja um exemplo simples de parâmetros de método:
O código acima gera:
Area of triangle is: 4.5
O programa contém a classe 'Triangle' com o método 'calculate', que recebe dois parâmetros: height e width. Os valores inteiros 4 e 5 são passados quando 'calculate' é chamado a partir da instância 'a'.
Conclusão
Parabéns por chegar ao final deste tutorial!
Nele, você viu variáveis em Scala, regras para defini-las, diferentes tipos, como fazer declarações e atribuições múltiplas e como funciona o escopo.
Se quiser aprender mais sobre Scala, faça o curso Introduction to Scala da DataCamp.