We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
图的表示问题,节点表示,层级结构表示 ,这里没理解好,思路不清晰有点混乱
一开始很难受,但是我越来越体会到scala的好处了,虽然指令式编程已经根深蒂固了,scala的妙用非常简洁,妙啊!
下面贴上我学习scala过程中记录的一些精华:
var:定义完可变
val:定义完不可变
定义函数最常用的是作为某个对象的成员
函数字面量:(x:Int , y:Int)=> x+y
箭头是指明的意思
var increase = (x:Int) => x+1 val numbers = List(-11,-10,-5,0,5,10) numbers.foreach( (x:Int)=> println(x) ) numbers.filter( (x:Int)=> x>0 )
numbers.filter(x => x>0)
numbers.filter( _>0 )
numbers.foreach(println _ ) == numbers.foreach(x=>println)
def makeRowSeq(row: Int) = for(col <- 1 to 10) yield { val prod = (row * col ).toString val padding = " " * (4 - prod.length) padding + prod }
避免使用返回语句,尤其是多条返回语句,
1. 代之以把每个方法当作是创建返回值的表达式,最后一行语句就是返回值 2. 把大的方法分解为多个小的方法
scala不能定义静态成员,而是代之以定义单例对象(object),除了用object关键字替换class以外,单例对象的定义与类定义一致
scala类中不能定义静态变量,所以单例对象就是拿来定义静态变量的
对象与类的差异:
for(i<- 0 to args.length-1) println(i)
这种枚举很少见,因为集合对象本来就可以被枚举,为什么还需要索引值嘞?而且索引还容易溢出
for(i <- args if args.getName.endWith(".scala")) println(i) for( file<- files if file.isFile if files.getName.endWith(".scala") ) println(file)
在for循环里面,有一些变量需要复用,可以在for循环中定义一个变量来复用
for(i <- args if args.getName.endWith(".scala")) println(i) for( file<- files if file.isFile line <- fileLines(file) #嵌套循环 trimmed = line.trim #流间变量 if trimmed.matches(pattern) ) println(file + ":" + trimmed)
一个集合去创造另一个集合
for {子句} yield {循环体}
val newSet = for( file<- files if file.isFile line <- fileLines(file) #嵌套循环 trimmed = line.trim #流间变量 if trimmed.matches(pattern) ) yield trimmed.length
object FileMatcher { private def filesHere = (new java.io.Files(".")).listFiles def filesEnding(query: String) = for(file <- filesHere; if file.getName.endWith(query)) yield file }
def filesEnding(query: String, matcher:(string,string) => Boolean ) = { for(file <- filesHere; if file.getName.endWith(query)) yield file }
def filesEnding(query:String) = filesMatching(query,_.endWith(_)) def filesContaining(query:String) = filesMatching(query,_.contains(_))
在scala中所有的变量都存在有效范围,注意局部变量!!!
0 max/min 5 -2.7 abs/round 4 to 6 "bob" capitallize "robert" drop 2
List不提供append方法,因为每添加一个耗时太长,可以这样解决:
list.count(s=>s.length==4) list.forall(s=>s.endWith("l")) list.foreach(s => println(S)) list.map(s => s+"y" ) 列表内每一个元素加y list.sort( (s,t) => s.CharAt(0) < t.CharAt(0) )
The text was updated successfully, but these errors were encountered:
No branches or pull requests
本周进展
遇到的问题
最大的拦路虎
图的表示问题,节点表示,层级结构表示 ,这里没理解好,思路不清晰有点混乱
scala学习
下面贴上我学习scala过程中记录的一些精华:
变量定义
var:定义完可变
val:定义完不可变
函数
定义函数最常用的是作为某个对象的成员
头等函数
函数字面量:(x:Int , y:Int)=> x+y
箭头是指明的意思
运用
方法
避免使用返回语句,尤其是多条返回语句,
Singleton对象
scala类中不能定义静态变量,所以单例对象就是拿来定义静态变量的
对象与类的差异:
For表达式
枚举
过滤
过滤间变量绑定
推导式
for {子句} yield {循环体}
函数闭包
变量范围
在scala中所有的变量都存在有效范围,注意局部变量!!!
语言特性
富包装器
列表
List不提供append方法,因为每添加一个耗时太长,可以这样解决:
用法合集:
The text was updated successfully, but these errors were encountered: