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 基础笔记的更多相关文章

  1. Scala学习笔记(一)编程基础

    强烈推荐参考该课程:http://www.runoob.com/scala/scala-tutorial.html 1.   Scala概述 1.1.  什么是Scala Scala是一种多范式的编程 ...

  2. Scala学习笔记及与Java不同之处总结-从Java开发者角度

    Scala与Java具有很多相似之处,但又有很多不同.这里主要从一个Java开发者的角度,总结在使用Scala的过程中所面临的一些思维转变. 这里仅仅是总结了部分两种语言在开发过程中的不同,以后会陆续 ...

  3. Scala编程 笔记

    date: 2019-08-07 11:15:00 updated: 2019-11-25 20:00:00 Scala编程 笔记 1. makeRDD 和 parallelize 生成 RDD de ...

  4. Java基础笔记 – Annotation注解的介绍和使用 自定义注解

    Java基础笔记 – Annotation注解的介绍和使用 自定义注解 本文由arthinking发表于5年前 | Java基础 | 评论数 7 |  被围观 25,969 views+ 1.Anno ...

  5. php代码审计基础笔记

    出处: 九零SEC连接:http://forum.90sec.org/forum.php?mod=viewthread&tid=8059 --------------------------- ...

  6. MYSQL基础笔记(六)- 数据类型一

    数据类型(列类型) 所谓数据烈性,就是对数据进行统一的分类.从系统角度出发时为了能够使用统一的方式进行管理,更好的利用有限的空间. SQL中讲数据类型分成三大类:1.数值类型,2.字符串类型和时间日期 ...

  7. MYSQL基础笔记(五)- 练习作业:站点统计练习

    作业:站点统计 1.将用户的访问信息记录到文件中,独占一行,记录IP地址 <?php //站点统计 header('Content-type:text/html;charset=utf-8'); ...

  8. MYSQL基础笔记(四)-数据基本操作

    数据操作 新增数据:两种方案. 1.方案一,给全表字段插入数据,不需要指定字段列表,要求数据的值出现的顺序必须与表中设计的字段出现的顺序一致.凡是非数值数据,到需要使用引号(建议使用单引号)包裹. i ...

  9. MYSQL基础笔记(三)-表操作基础

    数据表的操作 表与字段是密不可分的. 新增数据表 Create table [if not exists] 表名( 字段名 数据类型, 字段名 数据类型, 字段n 数据类型 --最后一行不需要加逗号 ...

随机推荐

  1. laravel定义全局变量

    laravel中config()函数可以获取 bootstrap/cache/config.php中的内容,而config文件夹下的所有配置文件夹中的内容可以通过  php artisan confi ...

  2. PHP数组循环遍历的几种方式

    PHP数组循环遍历 1.for循环 <?php //语法 for (init counter; test counter; increment counter) { code to be exe ...

  3. QT的一些小知识

    记录一下前段时间工作中用到的东西,包括开发工具和一些简单的技巧吧.也许对于大家来说耳熟能详了. 最开始学习QT记得是在Ubuntu12.04下用apt命令行的方式安装了QT4.8.4以及QT Crea ...

  4. CF1215D

    CF1215D 两个整数的和是偶数,他们的差也是偶数 博弈好难啊qaq 我好zz啊qaq 如果M放最后一个M胜 现在和比较大的一边如果空位还多的话M胜 M可以通过在大的那边放9来消掉那边所有的空 由于 ...

  5. centos7 安装python虚拟环境

    本篇主要介绍centos7系统下,安装python3虚拟环境.环境:系统centos7,源代码安装python3,/usr/bin/python3为自己安装的. 安装支持包 yum install p ...

  6. SQL中的DDL、DML、DCL、TCL

    1.DDL(Data Definition Language)数据库定义语言statements are used to define the database structure or schema ...

  7. Java中HashMap与ConcurrentHashMap的区别

    从JDK1.2起,就有了HashMap,正如前一篇文章所说,HashMap不是线程安全的,因此多线程操作时需要格外小心. 在JDK1.5中,伟大的Doug Lea给我们带来了concurrent包,从 ...

  8. teb教程6

    代价地图的转换 简介:本部分关于怎样把代价地图转换插件应用到转换占据栅格costmap2d到几何形状来优化(测试阶段) teb_local_planner包支持costmap_converter插件, ...

  9. 第二章 部署Kubernetes集群准备环境

    一.centos7开机自动联网设置 1.使用root用户登录进入Linux,打开进去终端 2.在终端中输入:cd  /etc/sysconfig/network-scripts 3.ll命令找到目录下 ...

  10. MyBatis 传递多个参数的几种方法

      简介: MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis 可以使用简 ...