scala入门
来源:互联网 发布:疯狂的美工助手破解版 编辑:程序博客网 时间:2024/05/01 20:53
近期玩儿spark,遇见了不少scala的小问题,先将其小语法做了整理,雅俗共享之
一、
其声明类使用object
1、 循环的使用
def main1(args: Array[String]) { var a = 0 for (a <- 1 to 10) { println("hello " + a); }2、list循环
def main2(args: Array[String]) { var a = 0 var list = List(1, 2, 3, 4, 5, 6, 7) //集合 for (a <- list) { println(a) } }
3、循环和筛选
def main3(args: Array[String]) { var a = 0 var list = List(1, 2, 3, 4, 5, 6, 7) //集合 for (a <- list; if a != 6; if a > 1) { //筛选 println(a) } }4、yield记住每次迭代中的有关值,并逐一存入到一个数组或者集合中
def main(args: Array[String]) { var a = 0 var itList = List(1, 2, 3, 3, 4, 5) for (a <- itList) { println(a) } }}二、函数调用
1、又返回值的函数调用 :Int= (int类型)
def add(a:Int,b:Int):Int= //函数有返回值时,必须显示之指明返回值类型 { var sum :Int=0 // 等价于 var sum=0 sum=a+b return sum } def main1(args:Array[String]){ println(add(1,4)) }2、柯西化函数--字符串拼接
def strcat(s1:String)(s2:String)(s3:String)= //注:返回值为字符串 { s1+s2+s3 } def main2(args:Array[String]){ var str1="helloo" var str2="china" println(strcat(str1)(str2)(str1)) }3、柯西化函数 以下两者作用效果相同
def addy(x:Int)(y:Int)=x+y def addx(a:Int,b:Int):Int = { var sum:Int=0 sum=a+b return sum } def main3(args:Array[String]){ println(addx(2,3)) println(addy(3)(4)) }4、匿名函数--匿名函数的两种形式,左边都是参数,右边是函数体
(1)
def main4(args:Array[String]){ var d1=(x:Int,y:Int)=>x+y+3 //匿名函数参数可以多个 println(d1) //<function1> println(d1(2,3)) // println(d1()) //没有这种形式,会报错 }(2)
def main5(args:Array[String]){ var d2=new Function[Int,Int] //小写不行 { def apply(x:Int):Int=x+1 } println(d2) println(d2(4)) }小结:
var d1=(x:Int,y:Int)=>x+y+3 //匿名函数参数可以多个
var d2=new Function[Int,Int] { def apply(x:Int):Int=x+1 }
实战
def main6(args:Array[String]){ var d3=(x:Int,y:Int)=>x+y var d4=(x:Int,y:Int,k:Int)=>x+y+k var dir=()=>println(System.getProperty("user.dir"))//打印当前目录 dir() println(d3(1,5)) println(d4(1,4,5)) println(d3) //<function2> println(d4) //<function3> println() }
三、一些比较奇怪而且很棒的效果
1、可变参数,处理流式数据
def printk(args:String*)//可变参数 { var i:Int=0 //定义一个int类型 for(arg<-args) { println(i+" "+arg) i+1 //没有i++ } }// 默认值--当没有传递参数时,使用默认值 def printx(a:Int=4,b:Int=2,c:Int=1){ println(a+b+c) } def main7(args:Array[String]){ printk("1a","2b","3c","jj") printx() printx(1) printx(1,1) printx(1,1,1) //7 4 3 3 }2、内嵌函数--函数中放函数
def main8(args:Array[String]){ def it() { println("hello") } it() //最后要调用一下 }3、高阶函数--把函数当做参数,函数可以当做另一个函数的参数
def app( i:Int=>String , v:Int)=i(v) def putout[Int](x:Int)=x.toString() def putout2[Int](x:Int)=(x).toString()+"ab" //A模板 def putot[A](x:A)=x.toString() def main9(args:Array[String]){ println(app(putout,22)) //22 println(app(putout2,32)) //32ab println(app(putot,42)) //42 }4、递归调用
def add100(n:Int):Int= { if(n<=1) { 1 } else { n+add100(n-1) } } def go(a:Int) { println(a) } def main(args:Array[String]) { go(a=3) // //给指定参数赋值 b=3不行 只能是a println(add100(100)) }
0 0
- Scala入门
- scala 入门
- scala入门
- scala 入门
- scala入门
- Scala入门
- scala入门
- Scala入门
- Scala入门
- scala入门
- scala入门
- Scala详解---------快速入门Scala
- scala学习一:scala入门
- Scala详解---------快速入门Scala
- Scala入门指南
- Scala开发入门指南
- Scala入门资料
- 炼数成金Scala语言入门
- 为什么现在大多数服务器使用linux系统区别的一些总结
- 十九、Hive日志分析案例一
- WinEdit初使用
- 避免“锤子”心理
- 程序员进阶之路—如何独当一面
- scala入门
- 关于STM32 中的外部中断EXIT的说明和如何启用
- bzoj 3926: [Zjoi2015]诸神眷顾的幻想乡 后缀自动机
- 【BZOJ 4445】[Scoi2015]小凸想跑步 半平面交
- debug的使用--必备
- HDU
- C++与运算(&)错误笔记(优先级)
- iOS信号量机制
- java实现最大堆及代码测试