设为首页收藏本站

小牛社区-大数据学习交流社区|大数据免费学习资源

 找回密码
 立即注册!

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1943|回复: 0

Scala-4

[复制链接]

3205

主题

3588

帖子

1万

积分

管理员

Rank: 18Rank: 18Rank: 18Rank: 18Rank: 18

积分
15112
发表于 2016-6-12 12:55:10 | 显示全部楼层 |阅读模式
  1. import scala.io.Source
  2. def widthOfLines(s:String):Int=s.length.toString.length
  3. val f = Source.fromFile("main.scala")
  4. val linesList=f.getLines().toListval maxLine=linesList.reduceLeft((a:String,b:String)=>
  5. if (a.length>b.length)a
  6. else b)val padding=widthOfLines(maxLine)  //padding:Int 43 -> 2for (m<-linesList){val lenM=widthOfLines(m)println(m.length+" "*(padding-lenM)+"| "+m)}
复制代码
  1. import java.io.{PrintWriter, File}
  2. import scala.io.Source
  3. def searchItemFrom(x:Int,c:Char,s:String):AnyVal= //查找字符里的charif (x>=s.length)-1else if (s(x)!=c) searchItemFrom(x+1,c,s)else xdef factoria(x:Int):Int={//求阶乘def factoriaInner(a:Int,b:Int):Int={if(a<=1&&b<=1)1else if(a==1)belse factoriaInner(a-1,b*(a-1))}factoriaInner(x,x)
  4. }def makeRowSeq(row:Int)={//打印乘法表for(col<-1 to 10)yield {val prod=(row*col).toStringval padding=" "*(4-prod.length)padding+prod}
  5. }
  6. def makeRow(x:Int)=makeRowSeq(x).mkStringdef makeTable()={val lists=for(row<-1 to 10)yield {makeRow(row)}lists.mkString("\n")
  7. }def processFile(fileName:String,width:Int)={def processLine(line:String)={if(line.length>width)println(line)}val f = new File(fileName)val linesList =Source.fromFile(f).getLines().toListfor(line<-linesList)yield{processLine(line)}}object filesFinding{val filesHere = (new File(".")).listFiles()def filesMatch(query:String,matching:(String,String)=>Boolean)={for(f <- filesHere if(matching(f.getName,query)))yield f.getName}
  8. }def containsNeg(l:List[Int]):Boolean=l.exists(_<0)//判断是否有负数
  9. def containsOdd(l:List[Int]):Boolean=l.exists(_%2==1)
  10. val a=List(1,2,3,4)
  11. def withPrintWriter(file:File,op:PrintWriter=>Unit): Unit ={val writer = new PrintWriter(file)try{op(writer)} finally {writer.close()}
  12. }
  13. class A{val a=10
  14. }
  15. class B{val b=20
  16. }
  17. def process(a:A,op:B=>Unit)={val n=new Btry op(n)finally println(a.a)
  18. }process(new A,b=>println(b.b))
复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册!

本版积分规则

快速回复 返回顶部 返回列表