click below
click below
Normal Size Small Size show me how
Trabalho
Trabalho de LP
Termo | Definição | Exemplo |
---|---|---|
Paradigma Funcional | Funções tratadas como valor | def whileLoop(condition: => Boolean)(command: => Unit) { if (condition) { command; whileLoop(condition)(command) } else () } |
Tipagem Estática | Variaveis definidas em tempo de compilação | val i = 1 var j : Int = 1 |
Objeto | Tipos abstratos de dados. | abstract class Animal { def breathe : Unit; } class Dog extends Animal { def breathe { println("Dogs breath!"); } } |
Linguagem Interpretada | Liguagem que é executada em um programa de computador especifico, denominado interpretador. | JVM - Java Virtual Machine |
Tipo VOID | Metodo VOID é um metodo que não retorna valor algum, em scala não existe a implementação deste tipo, quando não recebe um valor explicito o compilador retorna um tipo Unit | scala> def imprime = print("Hello!") imprime: Unit |
Programação Imperativa | Scala é utilizada principalmente como linguagem funcional mas é uma linguagem multiparadigma, logo, oferece mais de um tipo como o tipo imperativo. | var contador = 0; val filename = "/usr/share/dict/words" val origemDados = Source.fromFile(filename) for (linha <- origemDados.getLines() ) { contador = contador + 1;} println("Temos " + contador + " palavras no dicionário em " + filename) |
Funções anônimas | Funções sem nome definido. No exemplo o "(x:Int) => x" é a função anônima dentro da função somaEntreComF | scala> somaEntreComF(1, 10, (x: Int) => x) |
Classes em Scala | As classes em Scala são semelhantes com a do Java, com a diferença que as classes em Scala podem ter parâmetro | class Complex(real: Double, imaginary: Double) { def re() = real def im() = imaginary } |
Métodos sem argumentos | Chamada de um metodo sem a necessidade dos parênteses para demonstrar que não existe metodo. | class Complex(real: Double, imaginary: Double) { def re = real def im = imaginary } |
Generalização | É a habilidade de escrever código parametrizado por tipos, no exemplo a classe é parametrizada por um tipo denominado por a que será definido pelo seu elemento. | class Reference[a] { private var contents: a = _ def set(value: a) { contents = value } def get: a = contents } |
Tuplas | Gera estruturas de dados simples limitadas por parênteses, no exemplo para acessá-lo utilizasse _N, N é a posição na tupla | val tupla = ("um","dois","tres") tupla._3 |
Função como objeto | Funções também são objetos em Scala. Isso possibilita passar funções como argumentos e outras funcionalidades interessantes | object Timer { def oncePerSecond(callback: () => unit) { while (true) { callback(); Thread sleep 1000 } } def timeFlies() { println("o tempo corre como um raio...") } def main(args: Array[String]) { oncePerSecond(timeFlies) } } |
Lista | Listas são estruturas flexíveis onde a cada novo elemento inserido na estrutura é alocado um espaço de memória para que seja processado seu armazenamento. | var listaString = List("palavra", "outra", "mais uma") var listaInt = List(3, 4, 2, 7) var listaDouble = List(3.5, 2, 6.7) |
Inferência de tipos | Permite que o compilador determine o tipo de uma variável quando isto é óbvio na declaração da mesma, ou seja, permite que a declaração de tipos seja em tempo de execução. | var i = 10 var a : int = 10 |
Avaliação Tardia | Scala permite que a avaliação tardia seja usada quando desejada. Para ativar a avaliação retardada devemos adicionar a palavra-chave lazy à definição dos valores. | lazy val conexaoBancoDados = DB.forConnection(testandoConexao()) |
Importando código Java | Em Scala, usamos o comando import para trazer módulos externos ao escopo do atual programa. | import java.io._ |
Construtores | Em Scala, construtores são basicamente trechos de código soltos dentro de classes. Ao instanciar classes, aquele código deve ser executado. | class Automovel(modelo: String) { println("Fui instanciado. Sou um carro modelo " + modelo + "\n") } object ScalaTutorialLiterati { def main(args: Array[String]) = { val fusca = new Automovel("Fusquinha Itamar Franco") } } |
Array | Scala proporciona uma estrutura de dados, um array, que armazena um conjunto sequencial de tamanho fixo de elementos do mesmo tipo. | var z: Array [String] = new Array [String] (3) ou var z = new Array [String] (3) |
Leitura de Arquivos | Leitura de arquivos é realmente simples. Você pode usar a classe Fonte da Scala e seu objeto companheiro para ler arquivos | importar scala.io.Source objeto Test { def main (args: Array [String]) { println ("Segue-se o teor de ler:") Source.fromFile ("teste.txt"). {Foreach imprimir } } } |
Gravar dados em arquivos | Scala está aberto a fazer uso de quaisquer objetos Java e java.io.File é um dos objetos que podem ser usadas na programação Scala para ler e gravar arquivos. | java.io._ importação objeto Test { def main (args: Array [String]) { val writer = new PrintWriter (new File ("teste.txt")) writer.write ("Olá Scala") writer.close () } } |