scala基础语法(代码片段)

transkai transkai     2022-12-13     741

关键词:

Scala基础

1、声明变量

package cn.gec.scala


object VariableDemo

  def main(args: Array[String])
    //使用val定义的变量值是不可变的,相当于java里用final修饰的变量
   
val i = 1

    //使用var定义的变量是可变得,在Scala中鼓励使用val
   
var s = "hello"
   
//Scala编译器会自动推断变量的类型,必要的时候可以指定类型
    //变量名在前,类型在后
   
val str: String = "gec"
 

 

 

2、常用类型

Scala和Java一样,有7种数值类型Byte、Char、Short、Int、Long、Float和Double(无包装类型)和一个Boolean类型

3、条件表达式

Scala的的条件表达式比较简洁,例如:

package cn.gec.scala

/**
  * Created by ZX on 2015/11/7.
  */
object ConditionDemo

  def main(args: Array[String])
    val x = 1
    //判断x的值,将结果赋给y
   
val y = if (x > 0) 1 else -1

    //打印y的值
   
println(y)


    //支持混合类型表达式
   
val z = if (x > 1) 1 else "error"
   
//打印z的值
   
println(z)


    //如果缺失else,相当于if (x > 2) 1 else ()
   
val m = if (x > 2) 1

    println(m)

    //在scala中每个表达式都有值,scala中有个Unit类,写做(),相当于Java中的void
   
val n = if (x > 2) 1 else ()

    println(n)

    //if和else if
   
val k = if (x < 0) 0

    else if (x >= 1) 1 else -1
    println(k)
 
 

 

 

4、块表达式

package cn.gec.scala

/**
  * Created by ZX on 2015/11/7.
  */
object BlockExpressionDemo

  def main(args: Array[String])
    val x = 0
    //在scala中中课包含一系列表达式,块中最后一个表达式的值就是块的值
    //下面就是一个块表达式
   
val result =

      if (x < 0)
        -1
      else if(x >= 1)
        1
      else
        "error"
     

   
    //result的值就是块表达式的结果
   
println(result)

 
 

5、循环

在scala中有for循环和while循环,用for循环比较多

for循环语法结构:for (i <- 表达式/数组/集合)
package cn.gec.scala

/**
  * Created by ZX on 2015/11/7.
  */
object ForDemo

  def main(args: Array[String])
    //for(i <- 表达式),表达式1 to 10返回一个Range(区间)
    //每次循环将区间中的一个值赋给i
   
for (i <- 1 to 10)

      println(i)

    //for(i <- 数组)
   
val arr = Array("a", "b", "c")

    for (i <- arr)
      println(i)

    //高级for循环
    //每个生成器都可以带一个条件,注意:if前面没有分号
   
for(i <- 1 to 3; j <- 1 to 3 if i != j)

      print((10 * i + j) + " ")
    println()

    //for推导式:如果for循环的循环体以yield开始,则该循环会构建出一个集合
    //每次迭代生成集合中的一个值
   
val v = for (i <- 1 to 10) yield i * 10

    println(v)

 

 

 

6、调用方法和函数

Scala中的+ - * / %等操作符的作用与Java一样,位操作符 & | ^ >> <<也一样。只是有

一点特别的:这些操作符实际上是方法。例如:

a + b

是如下方法调用的简写:

a.+(b)

a 方法 b可以写成 a.方法(b)

7、定义方法和函数

7.1、定义方法

 技术图片

 

方法的返回值类型可以不写,编译器可以自动推断出来,但是对于递归函数,必须指定返回类型

7.2、定义函数

 技术图片

 

7.3、方法和函数的区别

在函数式编程语言中,函数是“头等公民”,它可以像任何其他数据类型一样被传递和操作

案例:首先定义一个方法,再定义一个函数,然后将函数传递到方法里面

 技术图片

 

 

package cn.gec.scala

/**
  * Created by ZX on 2015/11/11.
  */
object MethodAndFunctionDemo

  //定义一个方法
  //方法m2参数要求是一个函数,函数的参数必须是两个Int类型
  //返回值类型也是Int类型
 
def m1(f: (Int, Int) => Int) : Int =

    f(2, 6)
 

  //定义一个函数f1,参数是两个Int类型,返回值是一个Int类型
 
val f1 = (x: Int, y: Int) => x + y

  //再定义一个函数f2
 
val f2 = (m: Int, n: Int) => m * n


  //main方法
 
def main(args: Array[String])


    //调用m1方法,并传入f1函数
   
val r1 = m1(f1)

    println(r1)

    //调用m1方法,并传入f2函数
   
val r2 = m1(f2)

    println(r2)
 
 

 

7.4、将方法转换成函数(神奇的下划线)

 技术图片

 

scala基础语法之trait详解(代码片段)

▼Scala系列学习笔记:Scala概述与开发环境配置Scala基础学习之运算符Scala基础学习之for循环和while循环一文掌握scala中的方法和函数Scala基础:类和对象、访问修饰符和构造器Scala的继承和抽象类本章节目标能够使用trait独... 查看详情

scala基础语法(代码片段)

目录1.java语法类比Scala基本语法需要注意以下几点:2声明变量2.1语法格式2.2在解释器中定义一个变量2.3val和var变量2.4使用类型推断来定义变量2.5惰性赋值3字符串3.1使用双引号3.2使用插值表达式3.3使用三引号4数据类型与操作... 查看详情

scala基础语法学习(代码片段)

目录一、变量 二、数据类型三、scala中的条件表达式四、循环五、while循环六、方法6、函数7、数组(1)、定长数组(2)、变长数组(3)、遍历数组(4)、数组常用操作8、元组 9、映射Map(1&... 查看详情

scala简介及基础语法(代码片段)

...变量SCALA_HOME=E: empscala-2.11.8PATH中加入%SCALA_HOME%in;四、Scala基础语法1)Scala程序的开始HelloWorldobjectHelloWorlddefmain(args:Array[String]):Unit=println("Hello,world!")2)Scala的数据类型Scala与java一样,有8种数值类型:Byte/Char/Short/Int/Long/Float/Double/Bo... 查看详情

大数据学习06scala的基础语法(代码片段)

大数据学习06Scala的基础语法介绍Scala的基础语法文章目录大数据学习06Scala的基础语法前言一、注释二、变量与常量1.基本语法2.代码实操三、标识符的命名规范1.命名规范2.字符串输出3.调试效果四、控制台标准输入1.代码实现2.调... 查看详情

scala基础(十三):scala模式匹配(代码片段)

1 match应用案例Scala的模式匹配案例代码完整:packagecom.atguigu.baseobjectMatchDemodefmain(args:Array[String]):Unit=//模式匹配,类似于Java的switch语法varresult=0valc=‘-‘cmatchcase‘-‘=>result=1println("匹配到-")case‘+‘=&g 查看详情

scala学习之一scala基础语法(代码片段)

环境  虚拟机:VMware10  Linux版本:CentOS-6.5-x86_64  客户端:Xshell4  FTP:Xftp4  jdk1.8  scala-2.10.4(依赖jdk1.8) spark-1.6Scala是一种混合功能编程语言,类似java,运行于JVM,集成面向对象编程和函数式编程的各种特性。(1)Scala... 查看详情

scala基础&函数(代码片段)

基础的scala语法和函数packagecom.yjm.scalaobjectPersondefmain(args:Array[String]):Unit=varage=20if(age>20)println("可以观看欧美")elseif(age>18)println("可以看国产")elseprintln("禁止观看")varcount=1while(count& 查看详情

scala基础语法介绍(代码片段)

1.变量的定义注意:在scala中没有static的概念,在object这个关键字修饰的类中所有的方法和属性都是static的。这里的object类叫做伴生类,目前不涉及。例:objectTest01defmain(args:Array[String]):Unit=//使用val定义的变量是不可变的,相当于... 查看详情

scala常用基础语法总结

1、在spark中如果没有为一个表达声明变量,默认为res。比如:scala>1+1res0:Int=2在实际开发中你常会看到如下代码Try(............)matchcaseSuccess(res)=>rescaseFailure(e)=>logger.error(s"line#$line.mkStr 查看详情

scala语法(代码片段)

模式匹配1)matchvala=1valb=amatch*//amatch返回值赋予变量bcase1=>"red"case2=>"green"case_=>"NotAllowed"*//其他通配符_orcaseunexpected=>unexpected+"isNotALLOWED"println(b)//输出redfor(elem<-List(9,12.3, 查看详情

scala函数式编程scala基础语法介绍

...la的一些语法。当然,这里是假设你有一些java或者python的基础,毕竟大部分人不会将scala当作第一门学习编程的语言。不过这些语法知识记不住也没关系,本身语法这种东西就应该在使用中被记住。这里写这篇的目的也只是梳理... 查看详情

scala基础语法

如果你之前是一名Java程序员,并了解Java语言的基础知识,那么你能很快学会Scala的基础语法。Scala与Java的最大区别是:Scala语句末尾的分号;是可选的。我们可以认为Scala程序是对象的集合,通过调用彼此的方法来实现消息传递。... 查看详情

scala基础(代码片段)

类型1.基本类型和Java类似,scala也有基本类型,但是scala的基本类型也是对象,String类型是直接引用的Java的string,举个栗子(scala脚本):scala>valnum=2+3num:Int=5//等价于scala>valnum=(2).+(3)num:Int=5基本操作符都是方法,定义在scala.基本... 查看详情

scala的简单语法介绍(代码片段)

文章目录变量声明语句块if语句for循环while、dowhile数组Map映射tuple元组变量声明//在Scala中val用于定义常量,var用于定义变量varvar_i=1var_i+=1valval_i=1val_i+=1val_i=2运行结果如下:可以看到,常量是初始... 查看详情

3天极速掌握scala语言:firstday(代码片段)

目录一、基础语法学习1.1声明变量1.1.1语法格式1.1.2在解释器中定义一个变量1.1.3val和var变量1.1.4使用类型推断来定义变量1.1.5惰性赋值1.2字符串1.2.1使用双引号1.2.2使用插值表达式1.2.3使用三引号1.3数据类型与操作符1.3.1数据类型1.3... 查看详情

scala基础学习03(代码片段)

文章目录scala类ScalaobjectScala模式匹配Scala读写文件Scala练习题编写函数过滤文本中的回文单词使用Scala编程输出杨辉三角求100~999之间的所有水仙花数scala类一般,Scala类名的第一个字母要大写,几个单词拼成一个类名,... 查看详情

scala中sorted,sortby,sortwith语法使用(代码片段)

排序在scala集合中,可以使用以下几种方式来进行排序sorted默认排序sortBy指定字段排序sortWith自定义排序默认排序sorted//示例:对列表进行升序排序scala>List(3,1,2,9,7).sortedres0:List[Int]=List(1,2,3,7,9)//示例:对列表进行... 查看详情