博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【SCALA】1、我要开始学习scala啦
阅读量:5248 次
发布时间:2019-06-14

本文共 2666 字,大约阅读时间需要 8 分钟。

 因为scala也是基于jvm上运行的,所以能跑java,原则上就能跑scala

1、国际惯例,先来个hello world走走

package demo1//object之下全为静态,scala没有static这玩意object HelloWorld {  //def 函数定义  args参数 后面接冒号然后是参数类型java反着来的,如果是java,那么就是String args[]  //最后main() 之后接 : 然后是这个函数反馈的类型 Unit代表没有反馈类型  def main(args : Array[String]) : Unit = {    //进去之后,该怎么样就怎么样。。。。    //还有scala可以不用写分号哦,真是为国家省布料。。。。    println("hello world")  }}

 

 

 

2.好,然后我们简单写几个程序,标识scala的基础入门吧

 文件操作

 

package demo1import java.io.Fileimport scala.io.Sourceobject FileDemo2 {  def widthOfLength(s : String) = s.length.toString.length  def fileLines(file : File) = Source.fromFile(file).getLines().toList  //静态变量  val filesHere = new File("./src/demo1").listFiles()  def grep(pattern : String) =  //这里用()或者 {}都可以    for {      //遍历所有文件      file <- filesHere      if file.getName.endsWith(".scala");      //遍历这个文件的所有行      line <- fileLines(file)      if line.trim.matches(pattern)    } {      println(file + " : " + line.trim)    }  def main(args: Array[String]): Unit = {    if(args.length > 0) {      val lines = Source.fromFile(args(0)).getLines().toList      val longestLine = lines.reduceLeft((a, b) => if (a.length > b.length) a else b)      val maxWidth = widthOfLength(longestLine)      for(line <- lines) {        val numSpace = maxWidth - widthOfLength(line)        val padding = " " * numSpace        println(padding + line.length + " | " + line)      }    } else {      Console.err.println("Please enter filename")    }    grep(".*main.*")  }}

这个功能用java实现,没个几百行估计搞不定。。。

光是文件输入输出的io操作代码,什么File = new File 什么InputStream,什么ReaderBuffer一堆的估计就要写个十几行

然后这里scala比较惊喜的是循环,特别是for循环,那是真的比较强大了

 

 3.最后我们来看看for这个循环再scala中的应用为啥那么强大吧,特别是yield的使用,真是很方便了,直接避免了我们java中再for循环,或者while循环等等需要保存对象的时候的list.add操作,这里直接准备好丢给你,就看你要不要

要的话加个yield,不要就不加,很方便

package demo2class FileDemo2 {  def makeRowSeq(row : Int) =    for(col <- 1 to 10) yield {      val prod = (row * col).toString      val padding = " " * (4 - prod.length)      padding + prod    }  def makeRow(row : Int) = makeRowSeq(row).mkString  def multiTable() = {    val tableSeq =      for(row <- 1 to 10) yield {         makeRow(row)      }    tableSeq.mkString("\n")  }}object FileDemo2 extends App {  implicit def add(x : Int) = 2 * 2  for(season <- List("fall", "winter", "spring")) {    println(season + ": ")  }  var a = 'asdasda  val a1 = "asdasda"  println(a + " ,nameis:" + a.name + s", value is:$a1 -> $a")  println(2)  val fileDemo2 = new FileDemo2  val listDemo2 = fileDemo2.multiTable()  println(listDemo2)}

 

 

 

 

 好啦,今天的学习就到这了,目前来看scala很像java的简化版本,毕竟是后java出来的,有些简化很正常,目前还没发现scala的独到的地方

当然除了它写代码确实很简洁,java几百行,这个用scala可能就十几行,或者几十行,代码量至少缩小一倍吧

 

后续学习,我们接着来挖掘scala吧

 

转载于:https://www.cnblogs.com/cutter-point/p/10994311.html

你可能感兴趣的文章
guava API整理
查看>>
无锁编程笔记
查看>>
jquery mobile
查看>>
如何在vue单页应用中使用百度地图
查看>>
Springboot使用步骤
查看>>
Spring属性注入
查看>>
Springboot-配置文件
查看>>
Springboot-日志框架
查看>>
P1192-台阶问题
查看>>
一、使用pip安装Python包
查看>>
spring与quartz整合
查看>>
Kattis之旅——Eight Queens
查看>>
3.PHP 教程_PHP 语法
查看>>
Duilib扩展《01》— 双击、右键消息扩展
查看>>
利用Fiddler拦截接口请求并篡改数据
查看>>
python习题:unittest参数化-数据从文件或excel中读取
查看>>
在工程中要加入新的错误弹出方法
查看>>
PS 滤镜— — sparkle 效果
查看>>
网站产品设计
查看>>
代理ARP
查看>>