Scala study

本书详细介绍了Scala编程的基础,包括REPL的使用、数据类型、表达式、条件式、函数、常用数据类型如List、Set、Map等。深入讲解了循环结构、函数定义、类与对象、单例对象和伴生对象,以及继承和特质等概念,是Scala初学者的宝贵资源。
摘要由CSDN通过智能技术生成

书名:Scala 学习手册/(美)Swartz,J. 著;苏金国等译。–北京:中国电力出版社,2016.2

第1章 概述

  1. 输出:println("hello world!"),String 字符为双引号,Char 字符为单引号
  2. REPL:Read,Evaluate,Print,Loop.可以跨会话存储
  3. up 箭头:上一行命令
  4. 每一行的输出resultREPL 会用一个常量变量保存:res0,res1,...
  5. 运行scala文件hello.scala
    1. 交互环境中输入 scala> :load hello.scala
    2. 命令行:scala hello.scala
  6. 退出::q

第2章 数据类型(数值类型:Int,Double,非数值类型:String,Char

  1. 字面量值(不可重新赋值):scala> val x:Int=10,不可变有类型的存储文件,用关键字val(value),类型可省略scala> val x = 10
    image
  2. 变量:scala> var a:Double=2.73,关键字var(variable),类型可省略scala> var a=2.73
  3. 字符串
    val approx = 355/113f
    println("Pi,using 355/113,is about "+approx+".")
    println(s"Pi,using 355/113,is about $approx.")	//内插法
    
  4. 字符串内插(替代格式printf,难读,输出可格式化)
    val item = "apple"
    println(s"How do you like them ${item}s?")
    println(s"Fish n chips n ,${"pepper "*3}salt")  // 字符串乘法
    
    println(f"I wrote a new $item%.3s today")
    println(f"Pi,using 355/113,is about ${355/113.0}%.5f.")	//内插法
    
  5. 正则表达式
    "Froggy went a' courting" matches ".* courting" //Ture or False
    
    "milk,tea,muck" replaceAll ("m[^ ]+k","coffee")
    "milk,tea,muck" replaceAll ("m[^ ].k","coffee")
    
    "milk,tea,muck" replaceFirst ("m[^ ]+k","coffee")
    "milk,tea,muck" replaceFirst ("m[^ ].k","coffee")
    
    // 捕获组:小括号定义,输入至少包括一个匹配值
    val input = "Enjoy this apple 3.14159 times today"
    val pattern = """.* apple ([\d.]+) times .*""".r // r 为字符串操作符
    val pattern(amountText) = input
    val amount = amountText.toDouble
    
  6. 类型操作(每个类型都属于一个对象)
    1. scala> 5.asInstanceOf[Double]:val/var 类型转换(尽量用第五条)
    2. scala> nada.getClass:val/var 查看类型
    3. val/var 类型确认:scala> nada.isInstanceOf[Unit]
    4. val/var 散列码: scala> "A".hashCode
    5. val/var 转换函数:toString/toByte/toFloat/...
  7. 元组:包含两个以上值得有序容器,值类型可不同,不可迭代但可通过下标访问。类似关系型数据库中得一行
    // 元组,下标从1开始
    val info = (5,"Korben",true)
    val name = info._2
    
    val red = "red"->"0xff0000" // 利用关系操作符创建2元组
    val reversed = red._2 -> red._1
    

注:

1. 值优先于变量,因为值可以为代码带来稳定性和可预测性。
2. 类型为Double 的变量可以赋 Int 值,因为Int数可以自动转换为Double 数。
3. 变量命名建议:`camel case`驼峰命名
4. 字符串支持三重双引号
5. Scala 不支持其他类型到Boolean 的自动转换,非Null 字符不会计算为True,0也不等于False
6. &&与||很懒,第一个参数可以出结论,不在计算第二个参数。&与| 会对两个参数都做检查
7. Unit 字面量:`scala> val nada=()`,通常用来定义函数和表达式

第3章 表达式 和 条件式

表达式

  1. 表达式:scala> val x=5*20;val amount = x+10,字面量val/var 也是一种表达式

  2. 表达式块:scala> val amount = {val x=5*20;x+10}块中最后一个表达式最为块得返回值。

    1. 表达式块分号,可用换行替代
    2. 表达式块可以嵌套scala> {val a=1;{val b=a*2;{val c=b+4;c}}}
    3. </
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值