Scala - 快速学习07 - 模式匹配】的更多相关文章

Scala中的模式匹配的功能可以应用到switch语句.类型检查.“解构”等多种场合. 简单匹配 Scala的模式匹配最常用于match语句中.Scala的match语句类似Java里的switch. 匹配实例: def color(num: Int): String = { val colorNum = num val colorStr = colorNum match { case 1 => "red" case 2 => "green" case…
1- 数组(Array) 数组一般包括定长数组和变长数组. 可以不指明数组类型,Scala会自动根据提供的初始化数据来推断出数组的类型. 在Scala中,对数组元素的应用,是使用圆括号,而不是方括号. 示例:定长数组 就是长度不变的数组,在Scala中使用Array进行声明. val myIntArr = new Array[Int](3) //> myIntArr : Array[Int] = Array(0, 0, 0) myIntArr(0) = 111 myIntArr(1) = 222…
IV.控制结构 1.if/else 除基本用法外,if/else语句能用来赋值,进而代替?:运算符.这得益于在Scala中,每个语句块都有值,就是该语句块最后一个语句的值.请看下面的代码. def abs(x: Int) = if(x < 0) -x else x 2.与If语句不同,While语句本身没有值,即整个While语句的结果是Unit类型的(). PS:scala中赋值语句也没有值. 3.用于迭代一个集合的for语句,格式为for(item <- collection).一些col…
1- 集合类(collection) 系统地区分了可变的和不可变的集合. scala.collection包中所有的集合类 可变集合(Mutable) 顾名思义,意味着可以修改,移除或者添加一个元素. scala.collection.mutable 中的所有集合类: 不可变集合(Immutable) 对不可变集合的操作(修改,添加,删除某个集合元素),都是返回一个新的集合,原来的集合不会发生改变. 由于“永远不会被改变”的特性,可以说不可变集合是线程安全的. Scala在默认情况下采用的是不可…
函数式编程的崛起 函数式编程中的“值不可变性”避免了对公共的可变状态进行同步访问控制的复杂问题,能够较好满足分布式并行编程的需求,适应大数据时代的到来. 函数是第一等公民 可以作为实参传递给另外一个函数 可以作为返回值 可以赋值给变量 可以存储在数据结构里 def greeting() = (name: String) => { s"Hello" + " " + name } //> greeting: ()String => String gre…
1- 类 1.1- 简介:类.方法及对象 类是用来创建对象的蓝图. Scala文件中包含的多个类之间,都是彼此可见的,不需要声明为public. 创建对象 定义好类以后,就可以使用new关键字来创建对象. 字段默认为public,在类外部和内部都可以访问该字段. 私有字段使用private关键字修饰,外界无法访问,只有在类内部可以访问该字段. 方法 通过def关键字实现方法的定义 方法的返回值:方法里面的最后一个表达式的值就是方法的返回值,不需要靠return语句. 如果方法不返回任何值,返回值…
表达式求值策略(Evaluation Strategy) Scala中所有的运算都是基于表达式的. Call By Value - 对函数实参求值,且仅求值一次:函数调用之前对所有表达式进行求值 Call By Name - 函数实参每次在函数体内被用到时都会求值:函数形参类型以“=>”开头 进行函数设计和调用的过程中,要理解两者之间的差异,明白执行过程和期望的结果. Scala通常使用“Call By Value”. 示例1: object test { def test1(x: Int, y…
1- 变量 变量 mutable variable 在程序运行过程中其值可能发生改变的量 关键词var定义变量,定义时直接进行求值 常量 immutable variable 在程序运行过程中其值不会发生变化的量 在声明时就必须被初始化,而且一旦初始化后就不能再赋值: 关键词val定义常量,定义时直接进行求值: 关键词lazy val --- 惰性求值的常量,只有当该变量第一次被使用时才会被求值 常量不能修改.如果程序尝试修改常量的值,将会在编译时报错 变量类型引用 可以不显示指定变量的类型,S…
1- 下载与安装 下载链接:http://www.scala-lang.org/download/ CMD To run Scala from the command-line, simply download the binaries and unpack the archive. http://www.scala-lang.org/download/install.html CMD : SBT(Simple Build Tool) 专门为scala语言设计的构建工具,包括运行环境,能够进行依…
Scala简介 Scala(Scalable Language)是一门多范式(multi-paradigm)编程语言,Scala的设计吸收借鉴了许多种编程语言的思想,具备面向对象编程.函数式编程等特性. Scala具备强大的并发性,支持函数式编程,可以更好地支持分布式系统: Scala语法简洁,能提供优雅的API: Scala兼容Java,运行速度快,且能融合到Hadoop生态圈中:   Scala特性 交互式编程:提供REPL(Read-Eval-Print Loop,交互式解释器),可以即时…
VI.Collections 1.Array 一些常用方法:println,  map( _ * 2), filter(_ % 2 == 0),  sum,   reserve Array是不可变的,可变的Array使用ArrayBuffer,需要先引入scala.collection.mutable包.例如,预先不知道数组长度可以使用ArrayBuffer来构建数组,构建完毕后,调用它的toArray方法,得到不可变的Array供后续使用,以提高性能.向ArrayBuffer的尾部添加或删除元…
为了用spark,先学下scala. 参考教程:http://meetfp.com/zh/scala-basic doc查询:http://docs.scala-lang.org 其它资料:http://scalachina.com/node/16 http://blog.csdn.net/mapdigit/article/details/21878083 特点: Scala是一种纯面向对象的语言,一切都是对象:将原始类型和类统一起来,同时也将函数和操作符统一起来. Scala又是函数式语言,这…
作者:Jeff Lee 出处:http://www.cnblogs.com/Alandre/ 欢迎转载,也请保留这段声明.谢谢! 系列文章:[传送门] Python具有基本的文本文件读写功能.Python的标准库提供有更丰富的读写功能. 文本文件的读写主要通过open()所构建的文件对象来实现.请记住, 文件只是连续的字节序列. 数据的传输经常会用到字节流, 无论字节流是由单个字节还是大块数据组成. 今天带来是对文件操作的小故事: 创建文件对象open() open() 的基本语法是: file…
Scala基础学习 摘要: 在篇主要内容:如何把Scala当做工业级的便携计算器使用,如何用Scala处理数字以及其他算术操作.在这个过程中,我们将介绍一系列重要的Scala概念和惯用法.同时你还将学到作为初学者如何浏览Scaladoc文档 1. 使用Scala解释器 2. 用var和val定义变量 3. 数值类型 4. 使用操作符和函数 5. 浏览Scaladoc Scala解释器 启动Scala解释器的步骤如下: 安装Scala 确保scala/bin目录位于系统PATH中 在你的操作系统中…
60分钟Python快速学习 之前和同事谈到Python,每次下班后跑步都是在听他说,例如Python属于“胶水语言啦”,属于“解释型语言啦!”,是“面向对象的语言啦!”,另外没有数据类型,逻辑全靠空格缩进表示等. 今天自己用了60分钟快速学习了下Python的语法.和大家分享下,也算是自己这一个小时的学习总结吧! 第一步:开发环境搭建: PyCharm 4.5.4 下载地址:http://www.jetbrains.com/pycharm/download/ 支持多种类型的操作系统,我这次是在…
LinqPad工具:帮你快速学习Linq 参考: http://www.cnblogs.com/li-peng/p/3441729.html ★:linqPad下载地址:http://www.linqpad.net/: 一.基本操作 1.    第一步:连接数据库: 2. 进行具体的linq操作: 执行查询: 二.实战用法:Left Join和Inner Join 1. 首先建数据库: 代码: create database MyDataDemo go use MyDataDemo go dro…
估计不会写C语言的同学也都听过C语言,从头开始快速学一下吧,以后肯定能用的上. 如果使用过其它类C的语言,如JAVA,C#等,学C的语法应该挺快的. 先快速学习并练习一些基本的语言要素,基本类型,表达式,函数,循环结构, 基本字符串操作, 基本指针操作,动态分配内存,使用结构表示复杂数据, 使用函数指针实现灵活逻辑. 虽然C是一个规模很小的语言,但也得自己多设计一些练习练手才能学会. 基本类型 我就记得char, int, 别的都不常用吧应该,用的时候再搜索. 表达式 和JAVA, C#差不多吧…
Java虚拟机JVM学习07 类的卸载机制 类的生命周期 当Sample类被加载.连接和初始化后,它的生命周期就开始了. 当代表Sample类的Class对象不再被引用,即不可触及时,Class对象就会结束生命周期,Sample类在方法区内的数据也会被卸载,从而结束Sample类的生命周期. 由此可见,一个类何时结束生命周期,取决于代表它的Class对象何时结束生命周期. 引用关系 加载器和Class对象: 在类加载器的内部实现中,用一个Java集合来存放所加载类的引用. 另一方面,一个Clas…
前言 本篇主要讲Scala的Array.BufferArray.List,更多教程请参考:Scala教程 本篇知识点概括 若长度固定则使用Array,若长度可能有 变化则使用ArrayBuffer 提供初始值时不要使用new,复杂对象数组没有提供初始值时必须提供new 用()来访问元素 用for(elem <- arr)来遍历数组 用for(elem <- arr if...)...yield...来将原数组转型为新数组 Scala数组和Java数组可以互操作 数组 1.定长数组定义: //定…
1. Java线程池 线程池:顾名思义,用一个池子装载多个线程,使用池子去管理多个线程. 问题来源:应用大量通过new Thread()方法创建执行时间短的线程,较大的消耗系统资源并且系统的响应速度变慢.[在一个什么程度上能够判断启用线程池对系统的资源消耗比启动定量的new Thread()资源消耗低?这个怎么测试?][用户体验卡顿?慢?观察CPU百分比?] 解决办法:使用线程池管理短时间执行完毕的大量线程,通过重用已存在的线程,降低线程创建和销毁造成的消耗,提高系统响应速度. 2. Java线…
1. JNI简介 JNI是Java Native Interface的英文缩写,意为Java本地接口. 问题来源:由于Java编写底层的应用较难实现,在一些实时性要求非常高的部分Java较难胜任(实时性要求高的地方目前还未涉及,实时性这类话题有待考究). 解决办法:Java使用JNI可以调用现有的本地库(C/C++开发任何和系统相关的程序和类库),极大地灵活Java的开发. 2. JNI快速学习教程 2.1 问题: 使用JNI写一段代码,实现string_Java_Test_helloworld…
W3c里的解释 使用bootstrap需要注意事项 1.  在html文件第一行要加上<!doctype html>[s1] 2.  导入bootstrap.min.css文件 3.  导入jquery.js[s2] 与bootstrap.js[s3] 快速学习 1.  登陆http://www.w3cschool.cc/bootstrap 2.  查看里面解说 3.  通过以下实例了解如何学习w3c的bootstrap.(一个警告框的实例) <!DOCTYPE html> <…
下面是通过代码快速学习C#的例子. 1.学习任何语言都必定会学到的hello,world! using System; public class HelloWorld { public static void Main(string[] args) { Console.Write("Hello World!"); } } 2.原始的C#编译器(你可以使用下面的命令行编译C#) C:>csc HelloWorld.cs 你将得到: HelloWorld 详情可参见: http://…
Dapper快速学习 我们都知道ORM全称叫做Object Relationship Mapper,也就是可以用object来map我们的db,而且市面上的orm框架有很多,其中有一个框架 叫做dapper,而且被称为the king of ORM. 一:为什么选择Dapper 1. 性能优越: 其实在各大网站上,我们大概都会看到这样的一个对比效果图,在超过500次poco serialization的过程中所表现的性能,我们发现dapper是第二名, 当然第一名谁也无法超越,越底层的当然久越快…
想要快速学习ASP.NET网站开发的朋友可以按照下面这个学习安排进度走.可以让你快速入门asp.net网站开发!但也局限于一般的文章类网站!如果想学习更多的技术可以跟着我的博客更新走!我也是一名.NET学习者!正在进行系统的学习!在学习的过程中我会把更多的学习心得以及学习资料分享给大家! 课表内容: 课程名 课时数 课程详情 html 4 1.HTML语言的语法及主体结构 2.HTML常用标签 3.绝对路径和相对路径 4.表单设计等等 div+css 10 1.CSS引入方式 2.CSS选择器…
原文:ThinkPhp学习07 简单CRUD操作 public function show() { $m=M('User'); // $arr=$m->find(2); //查找id=2的数据,find只能返回一条数据 //2.SELECT * FROM `tp_user` WHERE ( sex=1 ) // $arr=$m->where('sex=1')->select(); //3.INSERT INTO `tp_user` (`username`,`sex`) VALUES ('…
60分钟Python快速学习(给发哥一个交代) 阅读目录 第一步:开发环境搭建: 第一个Python功能:初识Python 02.Python中定义变量不需要数据类型 03.在Pythod中定义方法 04.在Python中书写自己的类 60分钟Python快速学习 之前和同事谈到Python,每次下班后跑步都是在听他说,例如Python属于“胶水语言啦”,属于“解释型语言啦!”,是“面向对象的语言啦!”,另外没有数据类型,逻辑全靠空格缩进表示等. 今天自己用了60分钟快速学习了下Python的语…
C#快速学习笔记(译)   下面是通过代码快速学习C#的例子. 1.学习任何语言都必定会学到的hello,world! using System; public class HelloWorld { public static void Main(string[] args) { Console.Write("Hello World!"); } } 2.原始的C#编译器(你可以使用下面的命令行编译C#) C:>csc HelloWorld.cs 你将得到: HelloWorld…
前面说了js的一些高级方面的基础知识,这些都是比较容易出错的和比较难理解的东西,除了这些之外其它的知识都比较简单了,基础学好了,扩展起来就是小意思.今天说说js方面可以快速学习和入门的知识. 1.闭包 对于闭包来说,很多人对它有误解,有的说的怎么怎么好,但是我觉得这个东西说的那么悬无非是忽悠人的,对于闭包我看到有一篇博客上面说的很好: )闭包是一种设计原则,它通过分析上下文,来简化用户的调用,让用户在不知晓的情况下,达到他的目的: )网上主流的对闭包剖析的文章实际上是和闭包原则反向而驰的,如果需…
Java作为一门名副其实的工业级语言,语法友好,学习简单,大规模的应用给代码质量的管控带来了困难,特别是团队开发中,开发过程中的规范会直接影响最终项目的稳定性. 善医者“未有形而除之”,提高工程健壮性最好的方式是在代码出现问题之前就排除掉,不给Bug出现的机会.一份好的开发规范就可以起到这样的作用,大大减少产品上线后的问题. <阿里巴巴Java开发手册>是阿里巴巴的内部编码规范,阿里官方的Java代码规范标准, 手册以Java应用开发为维度,分为编程规约.异常日志规约.MYSQL规约.工程规约…