`

scala

阅读更多
一、安装运行

双击安装包,默认安装

win + r
进入到安装目录

cd ..

执行 scala 回车,启动 scala

退出  :q


二、变量

val s = "123"

val i = 123

不需明确指出变量的类型

三、IDE

安装配置JDK

四、DEMO

// object 定义程序入口
object HelloWorld {
  
  // 程序的入口
  // def 定义方法
  // main 方法名称
  // args 参数名称
  // Array[String] 参数类型
  // Unit 返回值
  // = {} 方法体
  def main(args: Array[String]): Unit = {
  // print 输出
    print("hello world") // 不写分号间隔;除非同一行需要写多个语句
  } 
  
}



方法定义
def 方法名(参数:类型[泛型]):返回值={
表达式1;表达式2
表达式3
表达式4
}
注意:一行有多个表达式,则加分号。Unit相当于java中的void。
object DivTest {
  
  def main(args: Array[String]): Unit = {
    
    // 变量定义输出
    val result = div(10,2)
    print(result)
    
    // 变量的定义
    val r = "a" ;
//    r = "b" ; // 不可修改
    var s = "a" ;
      s = "b" ; // 可修改
      
    // 数组 
    var arr = Array(1,2,3,4,5);
    // 数组遍历,+1
    var arr1 = for(a <- arr)  yield a+1
    // 输出
    for(b <- arr1) print(b)
    // 输出连续的数字
    for(c <- 1 to 10 ) println(c)
    for(c <- 1.to(10)) println(c)   
    
    Some(10/6) // 表示有值
    None // 表示无值
    if (r != 0) Some(10/9) else None
  }
  
  // 定义方法名称,参数及参数类型,返回值类型
  def div(a : Int , b : Int) : Int = {
     a / b // 默认方法的最后一行的计算结果作为返回值
  }
  

  
}



package com.scala.studay.day.one

object StringTest {
  def main(args: Array[String]): Unit = {
    
    // 1.字符串拼接
    val str = "scala"
    val str1 = "hello "+str
    // s 表示 StringContext 上下文标识
    val str2 = s"hello ${str}"
    println(str2)
    
    val str3 = s"hello $str"
    println(str3)
    
    // 2.GSON格式
    val gson = "{\"name\":\"hello\",\"age\":\"10\"}"
    val gsonScala = """{"name":"hello","age":"10"}"""
    println(gsonScala)
    
    // 3.定义函数
    var fn = (x:Int) => println(x)
    fn(10)
    
  }
}



// 声明类的构造方法
// case 序列化
case class Person (var name:String,var age:Int){
  
}

//继承父类并使用父类的参数
class Student(name:String,age:Int,var no:String) extends Person(name,age) {
  
}

object MainObject {
  	def main(args: Array[String]): Unit = {
			var per = new Person("hello",10)
			println(per.name)
			println(per.age)
			
			var student = new Student("li",10,"01")
			println(student.age)
			println(student.no)
   }
}



trait AbstractPrint {
  var name : String 
  def printT = {println(name)}
  def toToSomeThing
}

class AbstractPrintImpl extends AbstractPrint {
  
  
  def toToSomeThing: Unit = {
    println("To do SomeThing ")
  }

  var name: String = "Test"
}

object MainObject {
  	def main(args: Array[String]): Unit = {
		
			val abstra = new AbstractPrintImpl()
			abstra.printT
			abstra.toToSomeThing
	  }
}



object FunctionTest {
  
  // 定义方法
  def method (n:String) = {println(n)}
  def main(args: Array[String]): Unit = {
    
    /**
     * 将数组中的值按照奇偶数分组输出
     */
    // 初始化数组
    var array = Array(1,2,3,4,5,6,7,8).toList
    // 定义函数:若为奇数,返回TRUE
    def functionOddNumber = (n:Int) => { n%2 != 0} 
    // 输出结果
    println(array.partition(functionOddNumber))
    
  }
}





object ListTest {
  
  def main(args: Array[String]): Unit = {
      // Array 读取快
      // List  修改快
      var list = List(1,2,3,4,5)
      // 获取数组中的元素
      var secondListElement = list(1)
      println(secondListElement)
      // 遍历数组
      for(x <- list) println(x)
      // 取出首位元素
      var firstElement = list.head
      println(firstElement)
      // 取出尾部元素
      var tailElement = list.tail
      println(tailElement)
      // 取出第X个位置前的元素
      var subList = list.take(1);
      for(y <- subList) println("=="+y)
      // 在头部加元素
      println(list.:+(6))
      // 在尾部加元素
      println(list.+:(7))    
      // 在中间加元素
      var newList = list.take(3) ::: List(0) ::: list.takeRight(list.length - 3 )
      println(newList)
      // 删除元素:删除下标之前的元素
      println(list.drop(3));
      
  }
  
}




import scala.collection.mutable.ArrayBuffer

object CollectionTest {
  
   def main(args: Array[String]): Unit = {
     
     // 可变数组
     var arrayBuffer = ArrayBuffer(1,2,3,4,5,6)
     arrayBuffer += 7 ;
     for(x <- arrayBuffer) println(x)
     
     // Set
     var set = Set(1,2,3,4,1,2,3,4)
     println(set)
     
     // Map
     var map = Map(1->"a",2->"b",3->"c")
     println(map)
     
     // Tuple
     var tuple = (1,"2",3.00,4,"5",6.00)     
     println(tuple._1)
     
     
   }
  
}



单词统计
import scala.io.Source

object WordCountSimpleTest {
  
  def main(args: Array[String]): Unit = {
    // 读取文件内容,转为List
  val list = Source.fromFile("d:/study/scala/word.txt").getLines().toList
    // list转map,单词作为key,1作为value
.map { x=> (x,1) } 
    // 按照  key 进行分组
.groupBy { x=> x._1 }
    // 对 tuple 中的 第2个位置的元素进行相加操作,得出该单词的统计数量
.mapValues{ list => list.map { tuple => tuple._2 }.reduce {(x,y) => x+y} }
    // 输出
.foreach(x=>println(x))


  }
}

分享到:
评论

相关推荐

    scala sdk scala-2.12.3

    Scala SDK,全称为Scala Software Development Kit,是用于开发Scala应用程序的核心工具集。Scala是一种多范式的编程语言,融合了面向对象和函数式编程的特点,它运行在Java虚拟机(JVM)上,能够充分利用Java生态...

    Scala-2.11.1.zip

    Scala是一种强大的静态类型编程语言,它融合了面向对象和函数式编程的概念,旨在提供一种可扩展的、高效的编程环境。Scala这个名字是“Scalable Language”的缩写,它旨在克服Java的一些局限性,同时保留其平台兼容...

    scala2.12.1Windows镜像包

    Scala是一种强大的多范式编程语言,它融合了面向对象和函数式编程的概念。这个"scala2.12.1Windows镜像包"是为Windows操作系统设计的Scala编程环境的安装包,版本号为2.12.1。Scala 2.12.x系列是其重要的一个稳定...

    scala学习源代码

    Scala是一种强大的多范式编程语言,它融合了面向对象和函数式编程的特性。这个"scala学习源代码"的压缩包文件很可能包含了用于教学或自我学习Scala编程的基础示例。让我们深入了解一下Scala语言的关键概念和特性。 ...

    scala + mybatis 数据库查询

    Scala是一种强大的多范式编程语言,它结合了面向对象和函数式编程的特性。MyBatis则是一款流行的Java持久层框架,主要用于简化数据库操作。在本项目中,"scala + mybatis 数据库查询",我们将探讨如何将Scala与...

    Scala考试题1

    Scala 是一种多范式的编程语言,它融合了面向对象和函数式编程的特性。下面将详细解释题目中涉及的Scala知识点: 1. **var、val 和 def 的区别**: - `var` 定义可变变量,可以多次赋值。 - `val` 定义不可变变量...

    scala-2.12.10.zip

    Scala是一种强大的多范式编程语言,它融合了面向对象和函数式编程的概念。这个"scala-2.12.10.zip"文件是Scala编程语言的特定版本——2.12.10,专为Windows操作系统设计的安装包。Scala 2.12.x系列是该语言的一个...

    scala实战高清讲解

    Scala是一种强大的多范式编程语言,它融合了面向对象和函数式编程的特性,使得它在处理并发和大数据分析方面表现出色。"Scala实战高清讲解"这本书是学习Scala的宝贵资源,尤其对于那些希望深入理解并提升Scala技能的...

    scala-2.12.14.zip&scala-2.12.11.tgz Linux版本压缩包.rar

    Scala是一种强大的多范式编程语言,它融合了面向对象编程和函数式编程的概念,被广泛应用于大数据处理和分布式计算领域,特别是在Apache Spark等框架中。标题提到的"scala-2.12.14.zip&scala-2.12.11.tgz"是Scala的...

    scala-2.13.8 解压安装版

    Scala是一种强大的多范式编程语言,它融合了面向对象和函数式编程的特性。这个"scala-2.13.8 解压安装版"提供了一个无需安装过程的便捷方式来使用Scala开发环境。以下是关于Scala-2.13.8版本的一些关键知识点: 1. ...

    scala-2.12.6.tgz

    Scala是一种强大的多范式编程语言,它融合了面向对象和函数式编程的概念,设计目标是提供一种静态类型系统,能够防止程序在运行时出现错误。Scala-2.12.6.tgz是一个针对该语言的最新版本安装包,用于在各种操作系统...

    Programming.in.Scala.pdf

    从上述内容来看,《Programming in Scala.pdf》不仅是一本介绍Scala编程语言的书籍,更是一本为读者提供深入了解和应用Scala语言的实用工具。书籍中的内容覆盖了从基础知识到高级特性的多个层面,确保读者能够在掌握...

    scala-2.11.7 包

    Scala是一种强大的多范式编程语言,它融合了面向对象和函数式编程的特性。Scala-2.11.7是该语言的一个特定版本,适用于Java虚拟机(JVM)。这个包是官方发布的,确保了其可靠性和兼容性。 在安装Scala-2.11.7时,...

    学习scala好的项目

    Scala是一种强大的多范式编程语言,它融合了面向对象和函数式编程的特性,被广泛应用于大数据处理、分布式计算和Web开发等领域。Spark是基于Scala构建的大数据处理框架,其高性能和易用性使得Scala在大数据领域备受...

    最好的scala学习 课件

    Scala是一种强大的多范式编程语言,它融合了面向对象和函数式编程的特性,被广泛应用于大数据处理领域,特别是与Apache Spark相结合时。本课件是针对Scala学习者精心准备的资源,旨在帮助你深入理解和掌握Scala的...

    scala API 操作hbase表

    在本文中,我们将深入探讨如何使用Scala API操作HBase数据库。HBase是一个分布式、面向列的NoSQL数据库,它构建于Hadoop之上,提供实时访问大量数据的能力。Scala是一种强大的函数式编程语言,与Java虚拟机(JVM)...

    scala-2.11.8.rar

    Scala是一种强大的多范式编程语言,它融合了面向对象和函数式编程的特性。这个"scala-2.11.8.rar"压缩包包含了Scala语言的2.11.8版本的源代码,这对于理解Scala的工作原理、学习高级编程技巧以及进行自定义扩展或...

    scala-2.12.11.tgz

    Scala是一种强大的多范式编程语言,它融合了面向对象和函数式编程的特性。这个"scala-2.12.11.tgz"文件是一个针对Linux操作系统的安装包,包含了Scala编程语言的版本2.12.11。Scala版本号的格式通常是主版本号.次...

    Scala语法简明教程

    ### Scala语法简明教程知识点详解 #### Scala语言简史 - **诞生历史**:Scala起源于瑞士联邦理工学院洛桑(EPFL),由Martin Odersky在2001年开始设计,其灵感来源于Funnel——一种结合了函数式编程思想与Petri网...

    windows版scala-2.11.12.zip

    在这个"windows版scala-2.11.12.zip"压缩包中,包含的是Scala 2.11.12版本的Windows兼容安装文件,这是Scala的一个稳定版本,适用于开发人员在Windows操作系统上进行Scala编程。 Scala 2.11.x系列是Scala的一个主要...

Global site tag (gtag.js) - Google Analytics