Save
Busy. Please wait.
Log in using Clever
or

show password
Forgot Password?

Don't have an account?  Sign up 
Sign up using Clever
or

Username is available taken
show password

why


Make sure to remember your password. If you forget it there is no way for StudyStack to send you a reset link. You would need to create a new account.
Your email address is only used to allow you to reset your password. See our Privacy Policy and Terms of Service.


Already a StudyStack user? Log In

Reset Password
Enter the associated with your account, and we'll email you a link to reset your password.
focusNode
Didn't know it?
click below
 
Knew it?
click below
Don't know
Remaining cards (0)
Know
0:00
share
Embed Code - If you would like this activity on your web page, copy the script below and paste it into your web page.

  Normal Size     Small Size show me how

Scala

CONCEITOS, TIPOS E MÉTODOS GENÉRICOS, TUPLAS E FUNÇÕES COMO OBJETOS

TermDefinition
scala> class Reference[a] { private var contents: a = _ } Declaração de uma classe de tipo genérica, esse denominado "a".
scala> val x = new Reference[Int] Definição da variável x de Tipo Genérica sendo instanciada por por uma nova refência onde o tipo será Inteiro.
val t = new Tuple3(10, 20, 30) Declaração de uma tupla de forma explicita. Tupla de Inteiros. (Int, Int, Int)
object Timer { def oncePerSecond(callback: () => unit) { while (true) { callback(); Thread sleep 1000 } Exemplo de uma função tratada como objeto. Onde a função Timer, tem como argumento um elemento do tipo Unit, esse que é outra Função. Unit, é o elemento nulo retorno de funções que não tem retorno.
scala> val hostPort = ("localhost", 80) Declaração de uma tupla de forma implícita. Como "val" é um tipo genérico, esse pode receber qualquer valor, ou estrutura, como estão sendo passados dois dados de tipagem diferente, "hostport" é uma tupla (string, int);
scala> val endereco = newTuple2(123,"rua", 8.7) Declaração de uma tupla de forma explícita. "endereco" é uma tupla (String, Int, Float);
scala> val things = ("u", 2013, "c", "P","-") | println(things._4) println(things._1) println(things._3) println(things._5) println(things._2) Exemplo de Impressão desordenada de elementos em uma tupla, saida: "PUC-2013"
scala> val t = ("Al", 42, 200.0) | scala> t.productIterator.foreach(println+"dado") Interação foreach em uma tupla, o qual executa a impressão de todos os dados concatenado com a palavra "dado";
scala> val t = new Tuple3(1, "Amarildo", 3.5, 'c' ) scala> t.tostring() Convertendo todos os elementos da Tupla "t" (int, string, float) de 3 elementos, para string, resulta: (string, string, string)
scala> val t = new Tuple2("minas", "Puc") scala> t.swap() Inverte a ordem dos elementos de uma tupla, resultando neste caso a saída ("puc", "Minas");
abstract class Pilha[A] { def push(x: A): Pilha[A] = new PilhaNaoVazia[A](x, this)} A Classe Abstrata Pilha é de tipo genérico, definido por "[A]", onde toda chamada local do tipo "A" faz referência a um elemento de seu propio tipo. A generelização nesse caso permite elementos de todos os tipos, em uma pilha declarada dessa forma.
def isPrefix[A](p: Pilha[A], s: Pilha[A]): Boolean = { p.isEmpty || p.top == s.top && isPrefix[A](p.pop, s.pop) } Exemplo de método genérico, para verificar se e os elementos da pilha genérica "p" estão contidos na pilha genérica "s"
object Soma1 { def funcao1(funcaoX: () => Unit) { 1+funcao2() } def funcao2(){ 1+1) } def main(args: Array[String]) { val x = funcao1(funcao2) } } Exemplo Básico de uma função tratada como objeto. Aqui, o Objeto soma1 tem duas funções onde uma tem retorno Unit se argumentos, e outra recebe como argumento uma função como objeto do tipo unit. No Main, basta chama-las;
Vector[(String,String)](("Mario Soares","MM"),("Janaina Paiva","SS"),("Johnny Souza","MS")) Quando é necessário usar serie de tuplas, ou seja uma estrutura de dados de varias tuplas, usa-se Vector, que nesse caso é um vetor de Tuplas, do tipo (String, String)
val testeLimite = (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22) Por trás das cortinas scala faz com que os parâmetros de funções sejam tratados como tuplas. E como todas as tuplas em Scala, todas as funções são limitadas a apenas 22 membros, mais que 22 membros causará um erro de compilação:
abstract class Fila[F] { def push(x: F): Fila[F] = new FilaVaiza[F](x, this)} A Classe Abstrata Fila é de tipo genérico, definido por "F", onde toda chamada local do tipo "F" faz referência a um elemento de seu propio tipo. A generelização nesse caso permite elementos de todos os tipos, em uma fila declarada dessa forma.
def estacontido[F](f: Fila[F], e: Fila[F]): Boolean = { f.isEmpty || f.top == e.top && estacontido[F](f.pop, e.pop) } Método genérico, para verificar se algum elemento (Sendo ele de qualquer tipo) da fila genérica "f" estão contidos na fila genérica "e".
object forca{ def massa(aceleracaoconstante () => Float: massa: Float) { massa*aceleracaoconstante} def aceleracaoconstante(){ ac:float=2.5) } def main(args: Array[String]) { val forca = massa(aceleracaoconstante, 5.51) } } Função que retorna a força em Newtons exercida por um projétil qualquer acelerado constantemente. Onde a função "aceleracaoconstante" está sendo tratada como ojeto.
class Reference[x] { private var contents: x = _ def set(value: a) { contents = value } def get: a = contents } Exemplificação de tipo genérico onde _ representa um valor padrão. Este valor padrão é 0 para os tipos numéricos, false para o tipo booleano, () para o tipo unit e null para todos os tipos de objetos. Uma propriedade de tipo genérico
object flipView { def visualizaperfil(seleciona: () => unit) { while (true) { seleciona(); Thread sleep 1000 } Função como objeto. Enquanto a função Seleciona estiver sendo usada, ou seja, enquanto o usuario emitir comandos de seleção, a função thread sleep será executada com 1000 ms de intervalo. Essa passada como argumento.
Created by: Jansser
 

 



Voices

Use these flashcards to help memorize information. Look at the large card and try to recall what is on the other side. Then click the card to flip it. If you knew the answer, click the green Know box. Otherwise, click the red Don't know box.

When you've placed seven or more cards in the Don't know box, click "retry" to try those cards again.

If you've accidentally put the card in the wrong box, just click on the card to take it out of the box.

You can also use your keyboard to move the cards as follows:

If you are logged in to your account, this website will remember which cards you know and don't know so that they are in the same box the next time you log in.

When you need a break, try one of the other activities listed below the flashcards like Matching, Snowman, or Hungry Bug. Although it may feel like you're playing a game, your brain is still making more connections with the information to help you out.

To see how well you know the information, try the Quiz or Test activity.

Pass complete!

"Know" box contains:
Time elapsed:
Retries:
restart all cards