scala 基础笔记
view bound:必须传入一个隐式转换函数
class [T <% Ordered [T]]
content bound:必须传入一个隐式值
class [T : Ordering]
!异步发送消息
!? 同步发送消息,等待反馈信息
!!异步发送完成之后,返回一个future引用
scala列表操作符::把心元素整合到现有列表的最前端
scala里面Map 有2个特质:scala.collection.mutable 可变Map
scala.collection.immutable 不可变Map
scala 中如果一行开头用""" 表示开始 , 结尾用""" 表示结束
操作符和操作方法:
1+2 与(1).+(2) 表达的效果是一样
val s = "Hellon Word".toLowerCase 输出结果:hello word
for {句子} yield {循环体}
暂位符语法: _ > 0 坚持值是否大于 0
val f = (_: Int) +(_ : Int)
val b = sum(1, _: Int, 3) b(2) 输出结果 6
闭包减少代码
private def fileHere = new File(".").listFiles()
def fileEnding(query: String) = {
for (file <- fileHere; if file.getName.endsWith(query))
yield file
}
def fileContaining(query: String){
for (file <- fileHere; if file.getName.concat(query))
yield file
}
def filesRegex(query: String): Unit = {
for (file <- fileHere; if file.getName.matches(query))
yield file
}
def fileMatching(query: String, matcher: (String, String) => Boolean){
for (file <- fileHere; if matcher(file.getName, query))
yield file
}
优化后的结果:

一个方法之只要没有实现(即没有等号或者方法体) 它就是抽象的
具体(concrete)
多态动态绑定:
样本类和模式匹配:case class name 方便调用
abstract class CaseClass {
case class Var(name: String) extends CaseClass
case class Number(num: Double) extends CaseClass
case class UnOp(operator: String, args: CaseClass) extends CaseClass
case class BinOp(operator: String, left: CaseClass, right: CaseClass) extends CaseClass
def caseTest(){
val v = Val("x")
}
def simplifyTop(cass: CaseClass) :CaseClass = cass match{
case UnOp("-",UnOp("-",e)) => e
case BinOp("+", e, Number(0)) => e
case BinOp("*", e, Number(0)) => e
case _ => cass
// 选择器 match {备选项}
//的一个参数匹配“-”,第二个参数匹配e的值
//通配匹配
expr match{
case BinOp(op, left, right) =>
println(expr + "is a binarry operation")
case _ =>
}
expr match {
case BinOp(_,_,_) => println(expr + "is a birarry operation")
case _ => println("is something else ")
}
}
匹配固定长度序列模式
匹配任意长度序列模式
带有元组模式的匹配
类型模式匹配:
修改前:
class Person(var firstName: String, var secondName: String, var age: Int){
def getFirstName = firstName
def getSecondName = secondName
def GetAge = age
def setFirstName(value:String):Unit = firstName = value
def setLastName(value:String) = secondName = value
def setAge(value:Int) = age = value
override def toString =
"[Person firstName:" + firstName + " lastName:" + secondName +
" age:" + age + " ]"
}
添加BeanProperty 后
如果在代码中加入 @scala.reflect.BeanProperty 就是相当于设置了get/set 方法
class Person(fn:String, ln:String, a:Int)
{
@scala.reflect.BeanProperty
var firstName = fn @scala.reflect.BeanProperty
var lastName = ln @scala.reflect.BeanProperty
var age = a override def toString =
"[Person firstName:" + firstName + " lastName:" + lastName +
" age:" + age + " ]"
}
读取文件信息
def findFileName(): Unit ={
val fileName = (new java.io.File(".")).listFiles()
for {
files <- fileName
if files.listFiles()
if files.getName.endsWith("scala")
}System.out.print("file"+ files)
}
列表:参见List列表http://www.cnblogs.com/zhanggl/p/4984512.html
scala 基础笔记的更多相关文章
- Scala学习笔记(一)编程基础
强烈推荐参考该课程:http://www.runoob.com/scala/scala-tutorial.html 1. Scala概述 1.1. 什么是Scala Scala是一种多范式的编程 ...
- Scala学习笔记及与Java不同之处总结-从Java开发者角度
Scala与Java具有很多相似之处,但又有很多不同.这里主要从一个Java开发者的角度,总结在使用Scala的过程中所面临的一些思维转变. 这里仅仅是总结了部分两种语言在开发过程中的不同,以后会陆续 ...
- Scala编程 笔记
date: 2019-08-07 11:15:00 updated: 2019-11-25 20:00:00 Scala编程 笔记 1. makeRDD 和 parallelize 生成 RDD de ...
- Java基础笔记 – Annotation注解的介绍和使用 自定义注解
Java基础笔记 – Annotation注解的介绍和使用 自定义注解 本文由arthinking发表于5年前 | Java基础 | 评论数 7 | 被围观 25,969 views+ 1.Anno ...
- php代码审计基础笔记
出处: 九零SEC连接:http://forum.90sec.org/forum.php?mod=viewthread&tid=8059 --------------------------- ...
- MYSQL基础笔记(六)- 数据类型一
数据类型(列类型) 所谓数据烈性,就是对数据进行统一的分类.从系统角度出发时为了能够使用统一的方式进行管理,更好的利用有限的空间. SQL中讲数据类型分成三大类:1.数值类型,2.字符串类型和时间日期 ...
- MYSQL基础笔记(五)- 练习作业:站点统计练习
作业:站点统计 1.将用户的访问信息记录到文件中,独占一行,记录IP地址 <?php //站点统计 header('Content-type:text/html;charset=utf-8'); ...
- MYSQL基础笔记(四)-数据基本操作
数据操作 新增数据:两种方案. 1.方案一,给全表字段插入数据,不需要指定字段列表,要求数据的值出现的顺序必须与表中设计的字段出现的顺序一致.凡是非数值数据,到需要使用引号(建议使用单引号)包裹. i ...
- MYSQL基础笔记(三)-表操作基础
数据表的操作 表与字段是密不可分的. 新增数据表 Create table [if not exists] 表名( 字段名 数据类型, 字段名 数据类型, 字段n 数据类型 --最后一行不需要加逗号 ...
随机推荐
- 记录以下mysql5.7在win使用Navicat无法链接的问题
1.前提 系统:win1o0 局域网服务器:ubuntu18.04 mysql版本:5.7 问题描述: 在ubuntu18.04下的shell 中使用mysql -uroot -p 是可以登陆的, ...
- 【Java多线程系列七】ExecutorService
java.util.concurrent.ExecutorService接口提供了许多线程管理的方法 Method 说明 shutdown 拒绝接收新的任务,待已提交的任务执行后关闭,且宿主线程不阻塞 ...
- C语言博客作业02
2.1 一.请仔细阅读<提问的智慧>,用自己的话描述你的收获,并举例子说明应该如何提问. 答:1.提问是思考的另一种方式,一个好的提问能体现出我们在认真的,聪明的思考; 2.做什么事情都要 ...
- 数据批量导入HBase
测试数据: datas 1001 lilei 17 13800001111 1002 lily 16 13800001112 1003 lucy 16 13800001113 1004 meimei ...
- __init__ 和__new__的区别
__init__和__new__的区别 __init__是当实例对象创建完成后被调用的,然后设置对象属性的一些初始值. __new__是在实例创建之前被调用的,因为它的任务就是创建实例然后返回该实例, ...
- 14-vim-替换命令-01-替换
命令 英文 功能 工作模式 r replace 替换当前字符 命令模式 R replace 进入替换模式 替换模式 R命令进入替换模式,输入新字符替换当前光标所在位置的字符,替换完成后,按下ESC可以 ...
- css3新增(圆角边框(border-radius),盒子阴影(box-shadow),文字阴影(text-shadow),背景缩放(background-size))
1.圆角边框 border-radius border-radius 属性用于设置元素的外边框圆角 语法:border-radius:length; 参数值可以是数值 或者 百分比 的形式 正方形, ...
- 【记录】安装mysql Install/Remove of the Service Denied!错误的解决办法
最近安装 Mysql 5.6版本,在安装的过程中出现Install/Remove of the Service Denied!错误!(本人Win10 系统) 出现此问题是由于当前用户权限不够,需要以管 ...
- Spark Core 1.3.1源码解析及个人总结
本篇源码基于赵星对Spark 1.3.1解析进行整理.话说,我不认为我这下文源码的排版很好,不能适应的还是看总结吧. 虽然1.3.1有点老了,但对于standalone模式下的Master.Worke ...
- day06 python is == 编码 解码
day06 python 一. is 和 == 的区别 == :比较, 判断, 比较的是值: 可以比较数字, 字符串, 列表, 元组, 字典,等 is :是 比较, 比较的是内存地 ...