码迷,mamicode.com
首页 > 其他好文 > 详细

大数据入门第二十天——scala入门(二)scala基础

时间:2018-03-24 18:36:28      阅读:167      评论:0      收藏:0      [点我收藏+]

标签:区间   判断   pos   turn   数据   java   高级   bsp   构建   

一、基础语法

  1.变量类型

  技术分享图片

  // 上表中列出的数据类型都是对象,也就是说scala没有java中的原生类型。在scala是可以对数字等基础类型调用方法的。

  2.变量声明——能用val的尽量使用val!!!

  //使用val定义的变量值是不可变的,相当于java里用final修饰的变量
    val i = 3
    //使用var定义的变量是可变得,在Scala中鼓励使用val
    var j = "hello"
    //Scala编译器会自动推断变量的类型,必要的时候可以指定类型
    var k: String = "world"

  3.条件表达式

    常规判断

 val i = 10
    if (i < 100) {
      println("i<100")
    } 
 //支持混合类型表达式,将结果返回给变量
 val z = if (x > 1) 1 else "error"

  4.块表达式

 //在scala中{}中课包含一系列表达式,块中最后一个表达式的值就是块的值
    //下面就是一个块表达式
    val result = {
      if (x < 0){
        -1
      } else if(x >= 1) {
        1
      } else {
        "error"
      }
    }

  5.循环

  技术分享图片

  to是闭区间;until是左闭右开

//for(i <- 表达式),表达式1 to 10返回一个Range(区间)
    //每次循环将区间中的一个值赋给i
    for (i <- 1 to 3) {
      println(i)
    }

    //for(i <- 数组)
    for (i <- Array(1,3,5)) {
      println(i)
    }

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

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

   6.方法/函数声明

    方法

def functionName ([参数列表]) : [return type]
def m1(x: Int, y: String): String = {
    // 可以省略return,编译器会自动推断
    x + y
  }

    函数(有点儿像拉姆达表达式)

 val f = (x:Int) => 2*x

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

   结合Java8中拉姆达表达式,还是阔以理解的

def m1(f: (Int, Int) => Int): Int = {
    f(1,2)
  }
  val f = (x:Int, y:Int) => x +y

  m1(f)

    方法与函数的转换:

def m1(x:Int, y:Int): Int = {
    x + y
  }
  // 使用下划线进行方法与函数的转换
  val f = m1 _

    使用的话,例如Java8中的集合的使用,list.map(),里边可以传入一个拉姆达表达式

大数据入门第二十天——scala入门(二)scala基础

标签:区间   判断   pos   turn   数据   java   高级   bsp   构建   

原文地址:https://www.cnblogs.com/jiangbei/p/8640590.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!