Scala基础:模式匹配和样例类】的更多相关文章

Scala有一个十分强大的模式匹配机制,可以应用到很多场合:如switch语句.类型检查等.并且Scala还提供了样例类,对模式匹配进行了优化,可以快速进行匹配. 1.字符匹配     def main(args: Array[String]): Unit = {       val charStr = '6'       charStr match {         case '+' => println("匹配上了加号")         case '-' => pr…
3. 类.对象.继承和trait 3.1 类 3.1.1 类的定义 Scala中,可以在类中定义类.以在函数中定义函数.可以在类中定义object:可以在函数中定义类,类成员的缺省访问级别是:public //在Scala中,类不用声明为public //Scala源文件中可以包含多个类,所有这些类都具有公有可见性 class Person { //val修饰的变量是只读属性,相当于Java中final修饰的变量,只提供get() val id = "1" //var修饰的变量,提供g…
1. 模式匹配和样例类 Scala有一个十分强大的模式匹配机制,可以应用到很多场合:如switch语句.类型检查等.并且Scala还提供了样例类,对模式匹配进行了优化,可以快速进行匹配 1.1 模式匹配 1.1.1 匹配字符串 object CaseDemo1 extends App { // 继承App特质(接口)后就不需要写main方法了 val arr = Array("A","B","C") val name = arr(Random.n…
模式匹配 package com.zy.scala import scala.util.Random /** * 模式匹配 */ object CaseDemo { def main(args: Array[String]): Unit = { //匹配字符串 val arr1 = Array(" hadoop", " zookeeper", " spark ") val name = arr1(Random.nextInt(arr1.lengt…
一.前述 Scala Trait(特征) 相当于 Java 的接口,实际上它比接口还功能强大. 模式匹配机制相当于java中的switch-case. 使用了case关键字的类定义就是样例类(case classes),样例类是种特殊的类. Actor相当于Java中的多线程. 二.具体阐述 trait特性 1.概念理解 Scala Trait(特征) 相当于 Java 的接口,实际上它比接口还功能强大. 与接口不同的是,它还可以定义属性和方法的实现. 一般情况下Scala的类可以继承多个Tra…
一.本章要点 match表达式是更好的switch,不会有意外调入下一个分支 如果没有模式能够匹配,会抛出MatchError,可以用case _模式避免 模式可以包含一个随意定义的条件,称做守卫 你可以对表达式的类型进行匹配;优先选择模式匹配而不是isInstanceOf/asInstanceOf 你可以匹配数组,元祖,样例类的模式,然后匹配到不同部分绑定到变量 在for表达式中,不能呢匹配的情况会被安静的跳过 样例类是编译器会为之自动 二.更好的switch var sign=... val…
package com.yz8 import org.junit.Test class test { @Test def test: Unit = { val ints = List(1,5,7,6,8) println(ints.head)//1 println(ints.tail)//List(5, 7, 6, 8) //判断集合是否为空 println(ints.isEmpty) println(ints==Nil) } @Test def test2(): Unit ={ val int…
样本类:添加了case的类便是样本类.这种修饰符可以让Scala编译器自动为这个类添加一些语法上的便捷设定.如下: 1.添加与类名一致的工厂方法.也就是说,可以写成Var("x")来构造Var对象.    2.样本类参数列表中的所有参数隐式获得了val前缀,因此它被当作字段维护. 3.编译器为这个类添加了方法toString,hashCode和equals等方法. 模式匹配: match对应Java里的switch,但是写在选择器表达式之后.即: 选择器 match {备选项}. 一个…
一.关键字 1.final关键字 用final修饰的类:不能被继承 用final修饰的方法:不能被重写 注意:(1)在Scala中变量不需要用final修饰,因为val与var已经限制了变量是否可变 (2)final不能修饰特质,但是可以修饰抽象类 trait Animal { def eat(name:String) final def sleep(name:String):Unit ={ println(s"$name ->睡得天花乱坠") } } 如图代码,Pig继承特质A…
模式匹配应用场景:switch语句,类型查询,析构,样例类 一.更好的switch val ch :Char = '+' val sign = ch match{ case '+' => 1 case '-' => -1 case _ => 0 } println(sign) case _ 匹配其他情况,case 结尾不需要break跳出 二.守卫 val ch :Char = '9' var digit = 0 val sign = ch match{ case '+' => 1…
开发环境: Mac.Xcode6.0 下面内容均可创建ios common line项目来測试 1.Hello World演示样例 使用xcode创建新的common line项目,查看主文件main.swift,已经自己主动敲入println"HelloSwift"的代码了 -------------------------------------------------------- 2 变量和常量 var a = 1 //变量 a = 10  //给变量赋值 var b = 2…
一.case class 的特征 package com.jason.qianfeng case class Message(sender: String, receiver: String, body: String) object CaseClassTest { def main(args: Array[String]): Unit = { println("==case class 的比较") val mes = Message("jason", "…
C# int与string一起操作时注意 1 int a1= 1; 2 string a2= "2"; 3 Console.WriteLine(a1+a2); 4 Console.ReadKey(); 5 //在和string一起操作时,C#会把int转换为string,来实现两个string之间的连接,结果是12,不是3 C# 运算符重载 namespace 运算符重载{ class Program { public int Value { get; set; } static vo…
1 变量声明中的模式 match中每一个case都可以单独提取出来,意思是一样的. 应用案例 val (x, y) = (1, 2) val (q, r) = BigInt(10) /% 3 //说明 q = BigInt(10) / 3 r = BigInt(10) % 3 val arr = Array(1, 7, 2, 9) val Array(first, second, _*) = arr // 提出arr的前两个元素 println(first, second) 2 for表达式中的…
一. 类.对象.继承.特质 1.类 Scala的类与Java.C++的类比起来更简洁 定义: package com.jiangbei //在Scala中,类并不用声明为public. //Scala源文件中可以包含多个类,所有这些类都具有公有可见性. class Person { // 定义一个不可变的val(只有getter)和可变的var(getter setter都有) // 更直观的理解,可以通过反编译工具打开out目录的.class文件 val id = 9527 var name…
函数式编程 ​ 并行编程 ​ 多核计算.云计算 ​ 引用透明,给值确定,结果也确定 数据类型 三种变量修饰符 ​ val 定义immutable variable ​ var 定义mutable variable ​ lazy val ​ 可以不显示指定变量的类型,因为scala会自动进行类型推导 默认变量名 res ​ val 定义的值不可改变 根类Any ​ 二层:AnyVal.AnyRef AnyVal=>Numeric types.Boolean.Char.Unit AnyRef=>A…
Scala基础语法总结:Scala 与 Java 的最大区别是:Scala 语句末尾的分号 ; 是可选的.如果一行里写多个语句那么分号是需要的 val s = "菜鸟教程"; println(s)A:区分大小写 -  Scala是大小写敏感的,这意味着标识Hello 和 hello在Scala中会有不同的含义.def main(args: Array[String]) - Scala程序从main()方法开始处理,这是每一个Scala程序的强制程序入口部分. 标识符字符数字和符号字符数…
注:本文只说和Java不同的地方. 总结自: Scala详细教程 Scala教程 scala基础语法 Scala 与 Java 的最大区别是:Scala 语句末尾的分号 ";" 是可选的. def main(args: Array[String])Scala程序从main()方法开始处理,这是每一个Scala程序的强制程序入口部分. 换行符:Scala是面向行的语言,语句可以用分号(;)结束或换行符.Scala程序里,语句末尾的分号通常是可选的.如果你愿意可以输入一个,但若一行里仅有一…
前言 首先.我们要在一開始强调一件非常重要的事:Scala的模式匹配发生在但绝不仅限于发生在match case语句块中.这是Scala模式匹配之所以重要且实用的一个关键因素!我们会在文章的后半部分具体地讨论这一点. 本文原文出处: http://blog.csdn.net/bluishglc/article/details/51056230 严禁不论什么形式的转载.否则将托付CSDN官方维护权益. 模式匹配的种类 在Scala中一共同拥有例如以下几种类型的模式匹配: 通配符匹配(Wildcar…
类 scala的类定义非常灵活 class test4 class test2{} class test3(x:Int) 定义一个带构造函数的类 class Point (x : Int,y : Int){ def add() : Int = { x1 + y2 } } 通过this来重写构造函数 def this(X1 : Int){ this(X1,1) } def this(X2 : String){ this(0,1) } 除了重写构造函数,还可以当作当前对象的引用. def add(x…
从2011年開始写Android ApiDemos 以来.Android的版本号也更新了非常多,眼下的版本号已经是4.04. ApiDemos中的样例也添加了不少,有必要更新Android ApiDemo演示样例解析系列文章(当然之前的文章还是实用的,依旧能够作为參考). 为了不反复之前的内容,我们准备使用Scala语言开发Android应用,随着样例的逐步解析,我们会把ApiDemos的样例的代码依次改动为Scala代码,并使用Robujuice 来注入View.关于Scala编程能够參考博客…
1.OpenCV中LDA类的声明 //contrib.hpp class CV_EXPORTS LDA { public: // Initializes a LDA with num_components (default 0) and specifies how // samples are aligned (default dataAsRow=true). LDA(int num_components = 0) : _num_components(num_components) {}; //…
一.Hello World程序的执行原理 参考http://blog.csdn.net/zhangjg_blog/article/details/22760957 object HelloWorld{ def main(args : Array[String]){ println("HelloWorld") } } 以object关键字修饰的一个雷鸣,这种语法叫做孤立对象,这个对象是单例的.相当于将单例类和单例对象同时定义.(即这个类不能再创建一个实例,在类初始化的时候有., 就会创建…
进程(Process)和线程(Thread)是程序执行的两个基本单元. Java并发编程很多其它的是和线程相关. 进程 进程是一个独立的执行单元,可将其视为一个程序或应用.然而,一个程序内部同事还包括多个进程. Java执行时环境就是一个单独的进程,在它内部还包括了作为进程的各种类和程序. 线程 能够将线程看做轻量级的进程. 线程存在于进程其中,须要的资源开销较小.同一进程中的线程共享进程的资源. Java多线程 每个Java引用都仅仅要有一个线程 - 主线程(main thread).尽管后台…
1 match 应用案例 Scala的模式匹配 案例代码完整: package com.atguigu.base object MatchDemo { def main(args: Array[String]): Unit = { // 模式匹配,类似于Java的switch语法 var result = 0 val c = '-' c match { case '-' => result = 1 println("匹配到-") case '+' => result = -…
1 如何定义类 [修饰符] class 类名 { 类体 } 定义类的注意事项 1)scala语法中,类并不声明为public,所有这些类都具有公有可见性(即默认就是public), 2)一个Scala源文件可以包含多个类.   2 属性 属性是类的一个组成部分,一般是值数据类型,也可是引用类型. 属性/成员变量 1)属性的定义语法同变量,示例:[访问修饰符] var 属性名称 [:类型] = 属性值 2)属性的定义类型可以为任意类型,包含值类型或引用类型 3)Scala中声明一个属性,必须显示的…
Scala基础学习 摘要: 在篇主要内容:如何把Scala当做工业级的便携计算器使用,如何用Scala处理数字以及其他算术操作.在这个过程中,我们将介绍一系列重要的Scala概念和惯用法.同时你还将学到作为初学者如何浏览Scaladoc文档 1. 使用Scala解释器 2. 用var和val定义变量 3. 数值类型 4. 使用操作符和函数 5. 浏览Scaladoc Scala解释器 启动Scala解释器的步骤如下: 安装Scala 确保scala/bin目录位于系统PATH中 在你的操作系统中…
在最开始处引入 log 相关的 包 import org.apache.log4j.{Logger,Level} 在需要屏蔽日志输出的地方加上这两行代码 // 屏蔽不必要的日志显示在终端上 Logger.getLogger("org.apache.spark").setLevel(Level.ERROR) Logger.getLogger("org.eclipse.jetty.server").setLevel(Level.OFF) // scala io Case…
Scala的模式匹配是通过match表达式从若干可选项中选择,类似Java中的switch. 例子: val firstArg = if(args.length>0) args(0) else "" firstArg match{ case "salt" => println("pepper"); case "chips" => println("salsa"); case "e…
1. Scala 的内建控制结构 Scala 有几个内建的控制结构,包括: if 表达式 while 循环和 do-while 循环 for 表达式 try 表达式 match 表达式 Scala 的所有控制结构都返回某种值作为结果,这是函数式编程采取的策略: 程序是被用来计算出某个值,所以程序的各个组成部分也应该计算出某个值. 以上的5个控制结构中,有一个被称之为循环,而不是表达式,因为它不会返回一个有意义的值. while 和 do-while 的返回值的类型永远都是 Unit,即单元值,写…