`

scala学习笔记2

 
阅读更多
package com.scala.stu
import scala.collection.mutable.Map
import scala.io.Source
/**
 * 第二章例子
 */
object t_002 {
  
  def main(args: Array[String]): Unit = {
    t_arr()
    t_list()
    t_tuple()
    t_mp()
    t_File()
  }
  
  /**
   * 例子一,数组的使用,使用的是获取匿名函数的方法构造函数体
   */
  def t_arr():Unit = {//函数中的Unit类似java中的void
    
    //注:用val定义的对象是不能够重新赋值的,但变量的对象内部却仍然可以改变
    val arr = new Array[String](3)//定义一个数组,并且定义他的长度,数组的长度是定常的
    val names = Array("q","w","e")//val names = Array.applay("q","w","e")
    arr(0) = "hello"//利用括号定义下标的value值
    arr(1) = ","//arr(1) 转化成arr.applay(1),所以scala 可以使用()来调用数组游标
    arr.update(2, "world!\n")
    
    //注:0 to 2 ,转化成方法调用(0).to(2)
    for(i <- 0 to 2){//for循环中的<-代表将右边的所有依次赋值给左边
      print(arr(i))
    }
    //1+1 被转化成(1).+(2)形式
    print((1).+(2))
  }
  
  /**
   *list的例子 
   */
  def t_list(): Unit = {
    
    val oneTwo = List(1,2)
    val threeFour = List(3,4)
    val oneTwoThreeFour = oneTwo ::: threeFour//list是列表类,中定义了:::叠加功能
    println(" " + oneTwo + " and " + threeFour + " were not mutated.")
    println("Thus, " + oneTwoThreeFour + " is a new List.")
    for(v <- oneTwoThreeFour){
      print(v);println
    }
    
    val twoThree = List(2,3)//这里不写成new List,因为“List.apply()”是定义的工厂方法
    val oneTwoThree = 1 :: twoThree//列表类中最常用的操作符‘::’,他可以把新元素
                                    //组合到现有列表的最前端,然后返回执行结果的新列表
                                    //1 :: twoThree 转化成twoThree.::(1)
    println(oneTwoThree)
    //List中没有append操作,因为他耗时呈线性增长,而::是固定时间
    val oneTwoThree2 = 1 :: 2 :: 3 :: Nil//Nil是空列表的缩写,可以用cons操作符把所有元素都串起来
    println(oneTwoThree2)
    
  }
  
  /**
   * 注:常用
   * 元组的例子,与列表不同,元组可以包含不同类型的元素
   */
  def t_tuple(): Unit = {
    val pair = (99,"jiu")
    print(pair._1+" ");println(pair._2)//之所以使用_1不用()是因为applay()返回的是相同的类型
    val pair2 =(99,pair,"九")
    print(pair2._1+" ");println(pair2._2._1,pair2._3)
  }
  
  /**
   * Map的例子
   */
  def t_mp(): Unit ={
    val map = Map[Int,String]()//这里定义需要导入import scala.collection.mutable.Map
    map += (1 -> "go")  //任何对象都能调用 ->的机制被称为隐式转换
    map += (2 -> "to")  //调用->机制返回的是二元元组
    map += (3 -> "here")//意思是:将Int 3 转化成 “here”字符串
    println(map(2))     //map中都会元组
  }
  
  /**
   * 从文件里读取文本行
   */
  def t_File():Unit = {
    //首先是进行包的导入import scala.io.Source
    for(line <- Source.fromFile("i:/doc/1.txt").getLines){//返回的是一个枚举器,一旦遍历完,枚举器就会失效
      print(line+ " ")
    }
    
    //将从文件中读取的枚举器转化成一个列表器,这样就可可以把整个文件存入到内存当中供我们随时使用
    val lines = Source.fromFile("i:/doc/1.txt").getLines.toList
    var maxWidth = 0 
    for(line <-lines)
      maxWidth = maxWidth.max(widthOfLength(line))//函数的比较两个值得最大值
      println("\n最大的行:"+ maxWidth)
      
      //reduceLeft方法把传入的方法参数应用于lines的第一,二个元数,产生结果,然后再应用于这个结果和lines
      //接下去的一个元素,依次类推直至整个列表。最后返回最后应用的结果
      val longestLine = lines.reduceLeft(
        (a,b) => if(a.length > b.length) a else b    
      )
      val maxWidth2 = widthOfLength(longestLine)
      println("最大行数:"+maxWidth2)
  }
  
  /**
   * 统计文本的最大长度的行数
   * 使用函数是的函数
   */
  def widthOfLength(s: String) = s.length().toString().length
  
}

 

分享到:
评论

相关推荐

    Scala学习笔记,大全笔记

    Scala学习笔记,大全笔记

    Scala学习笔记(全)

    ### Scala学习笔记(全) #### 一、Scala概述与特点 Scala是一种多范式的编程语言,旨在集成面向对象编程和函数式编程的各种特性。它运行于Java平台(Java虚拟机JVM),并且能够完全兼容所有的Java程序。这使得Scala...

    scala学习笔记整理

    在"scala学习笔记整理"中,我们可以深入探讨以下关键知识点: 1. **基础语法**:Scala的基础语法与Java有相似之处,但也有很多独特的特点。例如,它支持变量的不可变性(immutability),使用`val`声明常量,`var`...

    Scala学习笔记

    ### Scala学习笔记关键知识点 #### 1. “均码”哲学与并发编程 - **“均码”哲学**: 指的是Scala设计时遵循的一种设计理念,即尽量保持语言的统一性和简洁性,使得不同的功能和特性能够以一种相似的方式进行处理。...

    [Scala学习笔记-中文资料]从java角度看Scala

    [Scala学习笔记-中文资料] 从java角度看Scala

    scala学习笔记1

    ScalaOverview.pdf ScalaTutorial.pdf ProgrammingInScala.pdf(这本是书) 博文链接:https://dogstar.iteye.com/blog/182673

    scala学习资料

    2. 函数式编程:Scala是函数式编程语言,支持高阶函数、不可变数据结构和闭包。通过函数式编程,可以编写出更简洁、无副作用的代码,易于测试和维护。 3. 类型系统:Scala具有强大的静态类型系统,可以防止运行时...

    Scala-学习资料-mht.rar

    2. 面向对象:Scala是面向对象的语言,支持类、对象、继承、封装和多态。同时,它引入了特质(Trait),提供了一种实现接口和混合行为的新方式,可以看作是接口和抽象类的结合。 3. 函数式编程:Scala也是一门函数...

    scala讲解笔记 入门及进阶 PDF文档1-5

    Scala是一种强大的多范式编程语言,它融合了面向对象和函数式编程的特性,被广泛应用于大数据处理、分布式计算和高性能应用开发。...每个文档都配有实例和注释,便于理解和实践,是Scala学习者宝贵的资源。

    scala学习笔记

    以上内容覆盖了 Scala 编程语言的核心知识点,从基本语法到高级特性,为初学者提供了一个全面的学习指南。Scala 是一门功能强大且灵活的语言,适合于构建大型的、复杂的软件系统。希望这些知识点能够帮助读者更好地...

    scala.rar学习笔记和心得

    Scala 是一门多范式(multi-paradigm)的编程语言,设计初衷是要集成面向对象编程和函数式编程的各种特性。 Scala 运行在Java虚拟机上,并兼容现有的Java程序。 Scala 源代码被编译成Java字节码,所以它可以运行于...

    学习scala好的项目

    在"scala-study"这个文件夹中,可能包含的子文件有练习代码、笔记、教程文档等,这些都是学习过程中的宝贵资料。通过这些资源,初学者可以逐步了解如何使用Scala编写Spark程序,包括如何创建SparkSession、加载数据...

    scala.rar基础知识,笔记很好的详细

    Scala学习资源Scala编程语言抓住了很多开发者的眼球。如果你粗略浏览Scala的网站,你会觉得Scala是一种纯粹的面向对象编程语言,而又无缝地结合了命令式编程和函数式编程风格。Christopher Diggins认为: 不太久...

    读书笔记:快速入手的Scala基础语法学习笔记.zip

    读书笔记:快速入手的Scala基础语法学习笔记

    scala-learn:scala学习笔记

    本教程“scala-learn:scala学习笔记”旨在帮助初学者深入理解Scala的基础知识,同时也为有经验的程序员提供了一个复习和提升的平台。 1. **基础语法与数据类型** Scala的基础语法简洁而强大,包括变量声明(val和...

    scala的操作笔记

    ### Scala的操作笔记 #### 一、课程目标与学习路径 本课程旨在通过三个阶段的目标来逐步深入学习Scala语言,最终能够灵活运用Scala进行Spark程序的开发,并具备阅读Spark内核源码的能力。 - **初级目标**:掌握...

Global site tag (gtag.js) - Google Analytics