las variables de declarar, los tipos de datos de cadena y operaciones, expresión condicional, ciclo, break y continue - Scala

Declarar las variables

definición de las variables de Java

un int de  un  =  0 ;

En Scala puede ser usado para definir la variable var o val, sintaxis es la siguiente:

Val / var  identificadores de variables : tipo de variable  =  valor inicial

entre

  1. val variables de -definida no pueden ser re-asignado
  2. var las variables -definida pueden ser re-asignado
  3. El tipo de variable nombre de la variable Scala definidos por escrito en el reverso
  4. Scala última afirmación no es necesario añadir un punto y coma

La definición de una variable

Ejemplo: Definir una variable para contener el nombre "Tom" de una persona

Código de referencia

scala> val name:String = "tom"
name: String = tom

val y las variables var

Ejemplos

Para volver a asignar el nombre de la variable es Jim, observar sus resultados operativos

Código de referencia

scala> name = "Jim"
<console>:12: error: reassignment to val
      name = "Jim"

Ejemplos

Uso var redefinir la variable para contener el nombre "Tom", y el intento de re-asignado a Jim, observar sus resultados operativos

Código de referencia

scala> var name:String = "tom"
name: String = tom
​
scala> name = "Jim"
name: String = Jim

Definir el tipo de variable inferencia

sintaxis concisa Scala de Java, se puede utilizar de una manera más concisa para definir las variables.

Ejemplos

Utilice la sintaxis más concisa para definir una variable que contiene el nombre de una persona "tom"

Código de referencia

scala> val name = "tom"
name: String = tom

Scala puede inferir automáticamente el tipo automáticamente en función del valor de la variable de la variable, por lo que la codificación más compacta.

asignación inerte

En la gran empresa de desarrollo de datos, a veces escribir sentencias SQL muy complejas, las sentencias SQL pueden tener cientos o incluso miles de líneas de la línea. La sentencia SQL se carga directamente en la JVM, habrá una gran cantidad de sobrecarga de memoria. ¿Cómo resolver?

Cuando hay un gran número de variables de datos guardados, pero no es necesario que cargados de forma inmediata en la memoria JVM. Se puede utilizar la asignación inerte para mejorar la eficiencia.

sintaxis:

perezoso  Val   nombre de variable  =  expresión

Código de referencia

scala> lazy val sql = """insert overwrite table adm.itcast_adm_personas
    |     select
    |     a.user_id,
....
    |     left join gdm.itcast_gdm_user_buy_category c on a.user_id=c.user_id
    |     left join gdm.itcast_gdm_user_visit d on a.user_id=d.user_id;"""
sql: String = <lazy>

 

cadena

Scala-definido de cadena ofrece una variedad de maneras, en el futuro podemos elegir la manera más conveniente para definir como se requiere.

  1. Utilizar comillas dobles
  2. expresión de interpolación
  3. Si se emplean comillas triples

Utilizar comillas dobles

gramática

Val / var  nombre de variable  =  "cadena"

Código de referencia

val name="hadoop6"
scala> println(name + name.length)
hadoop6

expresión de interpolación

expresión de interpolación puede evitar una gran cantidad de concatenación de cadenas.

gramática

Val / var  nombre de variable  =  S "$ {Variable / expresión} cadena"

S se añade antes de la definición de la cadena

En la cadena, $ {} puede ser usado para referirse a una variable o una expresión escrita

Ejemplos

Una pluralidad de variables se almacenan: "zhangsan", 30, "macho", la definición de una cadena de caracteres, la información se guarda.

Impresión: name = zhangsan, edad = 30, el sexo masculino =

 

Código de referencia

scala> val name = "zhangsan"
name: String = zhangsan
​
scala> val age = 30
age: Int = 30
​
scala> val sex = "male"
sex: String = male
​
scala> val info = s"name=${name}, age=${age}, sex=${sex}"
info: String = name=zhangsan, age=30, sex=male
​
scala> println(info)
name=zhangsan, age=30, sex=male

Si se emplean comillas triples

Grandes piezas de las necesidades de texto que se guardan, con comillas triples para definir la cadena. Por ejemplo: Guardar un gran segmento de la instrucción SQL. Las tres cadenas intermedias se citan cadena como un valor.

gramática

Val / var  nombre de variable  =  "" "una cadena
de cuerda 2" ""

Código de referencia

val sql = """select
    | *
    | from
    |     t_user
    | where
    |     name = "zhangsan""""
​
println(sql)

 

tipos y operadores de datos

El tipo de Scala mayoría operador como Java

Tipos de datos

tipo subyacente

tipo Descripción

Byte

entero con signo de 8 bits

Corto

entero con signo de 16 bits

En t

entero con signo de 32 bits

Largo

entero con signo de 64 bits

Carbonizarse

16 caracteres Unicode sin firmar

Cuerda

secuencia de tipo Char (string)

Flotador

32-bit de punto flotante de precisión

Doble

64 pares coma flotante de precisión

Boole

verdadero o falso

Nótese la diferencia con el tipo Java Scala

  1. Scala de todos los tipos de uso de una letra mayúscula al principio
  2. Utilizar el plástico Int lugar de enteros
  3. las variables definidas Scala puede tipo de escritura no, por lo que el compilador automáticamente inferir Scala

operadores

categoría

operadores

Los operadores aritméticos

+, -, *, /

Los operadores relacionales

>, <, ==,! =,> =, <=

Los operadores lógicos

&&, || ,!

  1. Scala no, +, - operadores
  2. A diferencia de Java, en la Scala se puede utilizar directamente == ,! = Comparación, que representan consistente con los iguales. Y el valor de referencia se comparan dos objetos, usando la ecuación

Ejemplos

Hay una cadena de caracteres "abc", y luego crear un segundo valores de cadena: después de la primera concatenación de cadenas en una cadena vacía.

A continuación, se comparan estas dos cadenas son iguales, entonces el valor de referencia para ver si son iguales.

Código de referencia

val str1 = "abc"
val str2 = str1 + ""
str1 == str2
str1.eq(str2)

Tipo de Scala jerarquía

tipo

explicación

Alguna

Todos los tipos de la clase padre, entonces hay dos sub-clases y AnyVal AnyRef

AnyVal

Todos los tipos numéricos de los padres

AnyRef

Todos los tipos de objeto (tipo de referencia) padre

Unidad

Representa el vacío, la unidad es una subclase de AnyVal. Es similar a Java en el vacío, pero orientado a objetos Scala más de Java

Nulo

Null es una subclase de AnyRef, lo que significa que es una subclase de todos los tipos de referencia. nula puede ser asignado a cualquier tipo de objeto

Nada

Todos los tipos de subclase  no pueden crear directamente la instancia de tipo, cuando un método lanza una excepción, el tipo de retorno no es nada, porque nada es una subclase de todas las clases, entonces se puede asignar a cualquier tipo

nada

def main(args: Array[String]): Unit = {

    val c = m3(1,0)

}



def m3(x:Int, y:Int):Int = {

    if(y == 0) throw new Exception("这是一个异常")

    x / y

}

problema

El código siguiente si hay un problema?

val b:Int = null

Scala explicará el error:

Tipo de Null no convierte tipo Int describe tipo Null tipo Int no es una subclase de

 

expresión condicional

Es decir, si la expresión expresión condicional. Scala sintaxis de la expresión condicional y Java el mismo.

Han devuelto si el valor de

Código de referencia

scala> val sex = "male"
sex: String = male
​
scala> val result = if(sex == "male") 1 else 0
result: Int = 1

Java no es el mismo,

  1. En la Scala, la expresión condicional también devuelve un valor de
  2. En el Scala sin una triple expresión, expresiones alternativas se pueden utilizar si un triplete de expresiones

bloque de expresión

  1. Scala usando {} representa una expresión bloque
  2. Y si las expresiones, el bloque es también un valor de la expresión
  3. El valor es el valor de la última expresión

problema

Será el siguiente código, ¿cuál es el valor de una variable?

scala> val a = {
    | println("1 + 1")
    | 1 + 1
    | }

 

circulación

En la Scala puede ser utilizado para y al mismo tiempo, pero por lo general se recomienda para la expresión, porque durante más sintaxis de la expresión concisa

para la expresión

gramática

para (i <- expresión / matriz / set) {

    // expresión

}

ciclo simple

Utilizar para la impresión digital expresión 1-10

Código de Referencia 1

scala> val nums = 1.to(10)                                                             
nums: scala.collection.immutable.Range.Inclusive = Range(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
scala> for(i <- nums) println(i)    

                                                                                                                    

código de referencia 2

// llamada al método infija

scala> for(i <- 1 to 10) println(i)

bucle anidado

Uso para la expresión, a raíz de caracteres de impresión

*****

*****

*****

Código de referencia

for(i <- 1 to 3; j <- 1 to 5) {print("*");if(j == 5) println("")}

guardia

para la expresión puede ser añadido si el juez sentencia, el juez si se llama a los guardias. Podemos utilizar la marca guardia de expresión para más concisa.

gramática

para (i <- expresión / matriz / set si la expresión ) {

    // expresión

}

Ejemplos

Uso para la expresión puede imprimir entre 1 y 10 números divisible por 3

Código de referencia

// añadir un guardia, puede imprimir divisible por 3 digitales

for(i <- 1 to 10 if i % 3 == 0) println(i)

para derivaciones

En el bucle, el rendimiento de expresión puede ser usado para construir un conjunto, que utilizamos para la expresión de rendimiento derivaciones llamado

Ejemplos

Generar un conjunto de 10, 20 ... 100

Código de referencia

// para la derivación: para la expresión empieza a ceder, para que un conjunto de construcciones de expresión

val v = for(i <- 1 to 10) yield i * 10

while

Scala de Java, mientras que bucle y es consistente

Ejemplos

Impresión digital 1-10

Código de referencia

scala> var i = 1

i: Int = 1



scala> while(i <= 10) {

     | println(i)

     | i = i+1

     | }

 

romper 和 continúan

  1. Scala, no hay una ruptura / continuar palabra clave
  2. Si tiene que usar pausa / continuar, tenemos que utilizar las clases de rotura scala.util.control empaquetar breable y ruptura método .

alcanzar el punto

uso

  1. Descansos Importar paquete scala.util.control.Breaks._ importación
  2. La expresión para uso envoltura rompible
  3. para las expresiones donde sea necesario para salir del bucle, añadir la pausa () llamada al método

Ejemplos

El uso de la impresión digital para expresiones 1-100, si el número 50 para llegar a la salida para la expresión

Código de referencia

// 导入scala.util.control包下的Break
import scala.util.control.Breaks._

breakable{

    for(i <- 1 to 100) {

        if(i >= 50) break()

        else println(i)

    }

}

Continuar para lograr

uso

  1. continuar con la implementación de la ruptura es similar, pero un poco diferente:
  2. Seguir logrando rompible {} es la expresión para el cuerpo comprende hasta

Ejemplos

Impresión digital 1-100, de expresiones de uso para atravesar, si el número es divisible por 10, no se imprimen

// 导入scala.util.control包下的Break    
import scala.util.control.Breaks._
for(i <- 1 to 100 ) {
   breakable{
       if(i % 10 == 0) break()
       else println(i)
  }
}

 

Publicado 94 artículos originales · ganado elogios 184 · Vistas de 140.000 +

Supongo que te gusta

Origin blog.csdn.net/weixin_44036154/article/details/105206247
Recomendado
Clasificación