scala的函数与定长数组

函数
scala支持函数式编程,将来编写Spark/Flink程序中,会大量使用到函数
定义函数
语法
scala val 函数变量名 = (参数名:参数类型, 参数名:参数类型…) => 函数体
函数是一个对象(变量)
类似于方法,函数也有输入参数和返回值
函数定义不需要使用def定义
无需指定返回值类型

示例
定义一个两个数值相加的函数
调用该函数
参考代码
scala scala> val add = (x:Int, y:Int) => x + y add: (Int, Int) => Int = scala> add(1,2) res3: Int = 3
方法和函数的区别
方法是隶属于类或者对象的,在运行时,它是加载到JVM的方法区中
可以将函数对象赋值给一个变量,在运行时,它是加载到JVM的堆内存中
函数是一个对象,继承自FunctionN,函数对象有apply,curried,toString,tupled这些方法。方法则没有

示例
方法无法赋值给变量
scala scala> def add(x:Int,y:Int)=x+y add: (x: Int, y: Int)Int
scala> val a = add :12: error: missing argument list for method add Unapplied methods are only converted to functions when a function type is expected. You can make this conversion explicit by writing add _ or add(_,_) instead of add. val a = add
方法转换为函数
有时候需要将方法转换为函数,作为变量传递,就需要将方法转换为函数
使用_即可将方法转换为函数

示例
定义一个方法用来进行两个数相加
将该方法转换为一个函数,赋值给变量
参考代码
scala scala> def add(x:Int,y:Int)=x+y add: (x: Int, y: Int)Int
scala> val a = add _ a: (Int, Int) => Int =
数组
scala中数组的概念是和Java类似,可以用数组来存放一组数据。scala中,有两种数组,一种是定长数组,另一种是变长数组
定长数组
定长数组指的是数组的长度是不允许改变的
数组的元素是可以改变的

语法
scala // 通过指定长度定义数组 val/var 变量名 = new Array元素类型
// 用元素直接初始化数组 val/var 变量名 = Array(元素1, 元素2, 元素3…) ```
在scala中,数组的泛型使用[]来指定
使用()来获取元素
示例一
定义一个长度为100的整型数组
设置第1个元素为110
打印第1个元素
参考代码
scala scala> val a = new ArrayInt a: Array[Int] = Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
scala> a(0) = 110
scala> println(a(0)) 110
示例二
定义一个包含以下元素的数组
scala “java”, “scala”, “python”
获取数组长度
参考代码
scala // 定义包含jave、scala、python三个元素的数组 scala> val a = Array(“java”, “scala”, “python”) a: Array[String] = Array(java, scala, python)
scala> a.length res17: Int = 3

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值