scala菜鸟

scala是面向对象的,也是面向函数的
var: 可重读定义一个变量
val:不可重复定义一个变量 但是可以继续值的修改
都为空时,原始值是不一样的:var i:Int= 0 var s:String=_ null 必须大写
定义函数:def fangfa(x:Int):Int={val r=x*x; print(x); r} 同一行写多个语句要用分号隔开
x:Int 简单的值 x:=>Int 传过来的是地址
过滤filter: .filter(%3==0).map(/4) 取出数组中除以3余数为0的 然后除以4输出
()和{}的区别:单个参数尽量用{},只有一行代码情况下可以用() 两个及以上参数必须用()
但是scala里一个条件时用(),满足多个条件时{}括住需要满足的几个条件
break和continue的区别:continue跳出循环里面后面的内容,外循环下一个(例如i+1) break跳出外循环
break: 先import scala.util.control.Breaks 然后在breakable{…break}
scala里面没有continue;
for循环:
for (i <- 1 to 100){
if(…){
}
else if(…){
}
else{
}
}
Any:AnyVal AnyRef
Tuple22:定义的三种形式方法:
val d=(“Mike”,“123 ABC street”,58) d.getClass可查看类型
d=new Tuple3(“Mike”,“123 ABC street”,58) 个数和数字必须对应
val d=Tuple3[String,String,Int](“Mike”,“123 ABC street”,58) 指明类型
Tuple元素不能超过22
Tuple里的元素也可以是一个Tuple
Tuple也可以是List里的一个元素
将a转换成数组遍历打印:a.productIterator.foreach(println) a.productInterator.map{x=>x+"!"}.foreach{s=>println(s)}
当转换完成成数组时:b.next 是数组的下一个值
map和foreache的区别(面试):map必须有返回值,生成新的数据集 foreach没有返回值,用作处理数据集
a._n :数据(Tuple)的第n个 从1开始 不是从0
a._n._n :Tuple里元素有Tuple 可以接着查
集合类Collections一共4个包:
1定义接口:foreach map
2immutable:定义集合类型不能修改 set:listset hashset treeset map:listmap hashmap treemap list:vector array range list stack queue stream
3mutable:可修改 map:observableMap 线程 set:observableset 线程 seq:arrayseq arraybuffer stack
4范式集合类:buffer array list
要先申明可不可以修改:
import scala.collection.immutable.Stack
import scala.collection.mutable.Stack
集合三种结构:seq set map seq包含list set集合不可重复 map键值对
array和list的操作:val a=Array(1,2,3,4,5,6)其他不行
集合分成4组:val b=a grouped 4 b.next
窗口(每次三个 往后推移):val b=a sliding 3 b.next 1,2,3 2,3,4 3,4,5
set和map的操作(不能有重复元素):
交集:a&b
并集:a|b = a union b
a有b没有:a&~b = a diff b
stream和vector(向量)(不常用)
a.head: 第一个元素
a.tail:除去第一个后面的元素
enumeration枚举:match 和case的用法一定要知道
def isweekend(wd:weekday.value):boolean=if(wdweekday.saturday || wdweekday.sunday) true else false
def isweekend(wd:weekday.value):boolean=wd match{
case weekday.saturday | weekday.sunday =>true
case _ => false
}
scala里的if else 是可以算返回值的 if 返回true else 返回 false java里不行 所以没有上面的写法
Null是一种类型,有唯一的值null
Nothing是一种类型 但是没有值 可以作为方法的返回值 如果一个函数返回值是Nothing,这个函数是不会返回的相当于死循环
Nil和None是值
Option的操作:
val a:Option[String]= None a == None(判断)
有值的情况下:a.get 可以查值 若没有值,则a.getOrElse(“hh”) 返回hh来替代
Try的操作:
import scala.util.Try
返回值有两种类型时:Left Right

Try:Success Failure
Option:Some None
Either:Left Right
import scala.util.Try
import scala.util.Success
import scala.util.Failure

import scala.util.Either
import scala.util.Left
import scala.util.Right

success/failure是类型 val t: Try[Int]=Success(100)
import scala.util.Date 导入日期格式
s=>int,-999 将s转换成int 成功取出来 失败输出-999:
java:try s.toInt catch case :e=>-999
scala: try s.toInt match case Success(i) =>i case _ => -999
最优:Try(s.toInt).toOption.getOrElse(-999)
匿名函数:def f=(i:Int)=>i+1
scala种_的用法:
1:模式匹配 match case1 … case2 … _ 除去以上两种情况的所有情况
2:匿名函数 a.map(
3)
3: import scala.util.matching._ 导入所有的包
4:get set
5:List里的_
6:函数 _ 表示从一个函数到另一个函数 函数指针
阶乘:def jiecheng(n:Int):Int =if(n==0) 1 else n
jiecheng(n-1)
最大公约数:def yue(a:Int,b:Int):Int=if(b==0) a else yue(b,a%b)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值