`
indinna
  • 浏览: 4906 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

scala学习笔记

阅读更多
1、for循环格式
for(i <- 1 to 10){print(i)}

2、懒加载 lazy val a = 1; 直到用时才会加载

3、方法的声明格式 def(x:Int,y:Int) : Int ={} 最后一个冒号后面是返回类型,不加则没有返回值

4、默认参数 def loadConf(conf : String = "default"){ print(conf)} 如果不传入参数 ,则默认使用default的数值

5、变长参数 def sun(elems: Int*){ } 可以传入 更多的参数

6、异常处理 scala 使用了模式匹配
try{

}catch{
case e: Exception => System.err.print(e)
case_ => //should never happen
}finally {

}

7、定长数组 val array_name = new Array[String](5),也可以 val a = Array("Jack","Lucy") 直接指定String类型的初始化值


8、变长数组 val a = scala.collection.mutable.ArrayBuffer[Int]() a+=1 a+=2 a+=(3,4,5) a++= Array(6,7,8) 就可以将数值甚至数组加入数组
也可以使用insert a.insert(num) , a.remove(num); a.toArray 就是将变长数组变成定长数组 然后再可调用sum max min 等#
a.trimEnd(num) 可以将后num个数去掉

9、遍历数组
val a = Array(1, 2, 3, 4, 5, 6, 7,
for (elem <- a) {
println(elem)

}

for(i <- 0 until a.length){
print(a(i))
}

10、Map(可变和不可变)

val age = Map("Jack" -> 20,"Lucy" -> 18)
//获取key为Jack的值age("Jack")
//倘若不存在,则会报错,所以用 age.getOrElse("Jack",0) 如果不存在,则默认赋予一个值 或者使用age.get("Jack") 不过如果不存在值,获取的为null
//插入元素可以使用 age("aa") = 2 则会将key为aa,值为2的值插入age的Map中 age += ("BB" ->3,"CC" ->4) 删除 直接 age -="AA"

//迭代map
val m = Map("jack" -> 20,"BB"-> 3,"CC" -> 4,"Lucy" ->18)

for((k,v) <- m){
println("key is" + k + ",value is " + v)
}
//只获取key的集合 m.keySet 只获取value的集合 m.values


11、元祖 val a = (1,3,4,5,6,8) 访问方式 下标从1开始。 a._1 就表示第一个元素



Scala面向对象

object Basic2 {
def main(args : Array[String]){
val p = new Person //没有参数的对象 可以不加()
p.name = "Jack"
println(p.name +":"+p.age)

val p = new Person("Jacky",20,"male")
print(p.name +":" + p.age + ":" + p.gender)
}
}

class Person{
var name : String = _ //没有参数 会自动生成getter和setter方法
val age = 10 //这种只会生成getter方法
}


//主构造器 直接跟在类名后面,朱构造器中的参数,最后会被编译成字段。
//朱构造器执行的时候,会执行类中的所有语句
//假设参数声明时不带val和var,那么相当于private[this]
val p = new Person("Jacky",20)
print(p.name +":" + p.age)

class Person(val name:String,val age :Int){
println("this is the primary constructor!")
}


class Person(val name:String,val age :Int){
println("this is the primary constructor!")
var gender : String = _
//附属构造器名称为this,每一个附属构造器必须先调用已经存在的子构造器或者附属构造器
def this(name : String,age : Int,gender : String){
this(name,age)
this.gender = gender

}



抽象类
trait 接口中可以写实现类

trait ConsoleLogger{
def log(msg : String): Unit ={
println("save money:" + msg)
}
}

trait MessageLogger extends ConsoleLogger{
override def log(msg : String): Unit ={
println("save money to bank" + msg)
}
}

abstract class Account{
def save
}

class MyAcount extends Account with ConsoleLogger{
def save: Unit ={
log("100")
}



Apply 静态的方法可以定义一个object 就为静态方法 Scala中没有static关键字

class ApplyTest {
def apply() = "APPLY"
def test: Unit ={
println("test")
}
}

object ApplyTest{
def static: Unit ={
print("i'm a static method")
}

def apply() = new ApplyTest
}

object Basic4 extends App{
//ApplyTest.static
//在调用ApplyTest的时候 已经new了
val a = ApplyTest()
//调用的是 object的方法
a.test

val t = new ApplyTest
//调用的是类的apply方法
print(t())



模式匹配

val value = 1
val result = value match{
case 1 => "one"
case 2 => "two"
// _代表了通配符 所以不需要break
case _=> "some other number"
}
println("result of match is :" + result)

val result2 = value match{
case i if i==1 =>"one"
case i if i==2 =>"two"
case _ => "some other number"
}

文件读取
val file = Source.fromFile("/usr/local/yangsiyi.txt")
for(line <- file.getLines()){
println(line)
}

获取网络内容 适用于爬虫
val file1 = Source.fromURI("http://www.baidu.com")


这种方式是按字符打印
for(c <- file){
println(c)
}

字符串追加
val a = "Yes"
s"$a, I Do !"
print(s"$a, I Do !")

private[Spark] 表示只能在此包里面访问
分享到:
评论

相关推荐

    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-learn:scala学习笔记

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

    scala学习资料

    - Scala与其他技术的结合:如Spark、Akka等,学习如何在实际项目中应用Scala。 总的来说,Scala是一种强大的工具,它的设计哲学是提供一种既能充分利用面向对象编程的优势,又能发挥函数式编程优点的语言。通过学习...

    Scala-学习资料-mht.rar

    在"Scala-学习资料-mht.rar"这个压缩包中,包含了关于Scala的学习资料,格式为MHT(单一文件网页),这种格式通常用于保存完整的网页内容,包括文本、图像和样式表。 首先,我们来了解一下Scala的基础知识。Scala这...

    Scala学习笔记1——从文件读取文本行

    刚接触Scala,所以并不是很习惯这种函数式编程风格,就从现在的第一篇笔记开始记录这个学习过程啦!笔记来源于《Scala编程》的学习。 从文本读取文本行 初步目标: 构建一个脚本从文本读取文本行,并将它们打印出来...

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

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

    scala.rar学习笔记和心得

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

    学习scala好的项目

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

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

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

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

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

Global site tag (gtag.js) - Google Analytics