一、前述 Scala中的函数还是比较重要的,所以本文章把Scala中可能用到的函数列举如下,并做详细说明。 二、具体函数 1、Scala函数的定义 ?...,要指定传入参数的类型 方法可以写返回值的类型也可以不写,会自动推断,有时候不能省略,必须写,比如在递归函数中或者函数的返回值是函数类型的时候。 ...scala中函数有返回值时,可以写return,也可以不写return,会把函数中最后一行当做结果返回。当写return时,必须要写函数的返回值。...如果返回值可以一行搞定,可以将{}省略不写 传递给方法的参数可以在方法中使用,并且scala规定方法的传过来的参数为val的,不是var的。...可以将匿名函数返回给val定义的值 匿名函数不能显式声明函数的返回类型 /** * 匿名函数 * 1.有参数匿名函数 * 2.无参数匿名函数 * 3.有返回值的匿名函数
scala 将异常信息完成输出到日志中 /** * scala 将异常信息完成输出到日志中 * @param e * @param data
Scala 数据类型 在 Scala 中,所有数据类型的根类型是 AnyVal , 类似于 java 中的 Object 类。...以下是 AnyVal 的文档说明: AnyVal 是所有值类型的根类型....内置了9种标准的AnyVal 子类型: 数值类型: scala.Double 64位 scala.Float 32位 scala.Long 64位 scala.Int 32位 scala.Char...如下代码片段,Scala会推断表达式结果为 Stirng 类型: scala> 24 + "H" res6: String = 24H Scala 内置9种基本数据类型 Scala 内置的9种数据类型的使用示例...salary: Double = 23000000; val isMale: Boolean = true; /** * 多行字符串,以三重双引号包裹; 这在python中是多行注释的写法
从上图可以得到以下结论: 在 scala 中有一个根类型 Any ,他是所有类的父类. scala中一切皆为对象,分为两大类AnyVal(值类型),AnyRef(引用类型),他们都是Any子类....Nothing类型也是bottomclass,他是所有类的子类,在开发中通常可以将Nothing类型的值返回 给任意变量或者函数, 这里抛出异常使用很多. scala数据类型介绍 Scala 与 Java...有着相同的数据类型,在Scala中数据类型都是对象,也就是说scala没有java中的原生类型 Scala数据类型分为两大类 AnyVal(值类型) 和 AnyRef(引用类型), 注意:不管是AnyVal...相对于java的类型系统,scala要复杂些!也正是这复杂多变的类型系统才让面向对象编程和函数式编程完美的融合在了一起 scala数据类型列表 数据类型 描述 Byte 8位有符号补码整数。...Java中的null引用。
scala中的类型以及操作符绝大多数和java一样,通过本篇博客,我们将学习: 与Java不一样的一些用法 scala类型的继承体系 ---- 数据类型 基础类型 类型说明 Byte 8位带符号整数 Short...NOTE] scala中没有,++、–运算符 与Java不一样,在scala中,可以直接使用==、!=进行比较,它们与equals方法表示一致。...类型 说明 Any 所有类型的父类,,它有两个子类AnyRef与AnyVal AnyVal 所有数值类型的父类 AnyRef 所有对象类型(引用类型)的父类 Unit 表示空,Unit是AnyVal的子类...,它只有一个的实例() 它类似于Java中的void,但scala要比Java更加面向对象 Null Null是AnyRef的子类,也就是说它是所有引用类型的子类。...它的实例是null 可以将null赋值给任何对象类型 Nothing 所有类型的子类 不能直接创建该类型实例,某个方法抛出异常时,返回的就是Nothing类型,因为 Nothing是所有类的子类,那么它可以赋值为任何类型
常量 类型 数组 列表 元组 对象及样例类 四、声明变量中的模式匹配 五、for表达式模式匹配 六、偏函数模式匹配 ---- 本次主要分享Scala中关于模式匹配的内容,Scala中的模式匹配类似于Java...中的switch语法,但是Scala在基于Java的思想上补充了特有的功能。...:运算符匹配first :: second :: rest,将一个列表拆成三份,第一个第二个元素和剩余元素构成的列表。...,unapply 方法将 student 对象的 name 和 age 属性提取出来,与 Student("alice", 15)) 中的属性值进行匹配 case 中对象的 unapply 方法(提取器...]): Unit = { val map = Map("A" -> 1, "B" -> 0, "C" -> 3) // //直接将 map 中的 k-v 遍历出来 for ((k, v
Java中异常处理有两种方式 try...catch和finally概述 finally重要面试题 三、Scala中的异常机制 ---- Scala中的异常机制语法处理上和 Java 类似,但是又不尽相同...如果发生任何异常,catch处理程序将处理它,程序将不会异常终止。...Scala 的异常的工作机制和 Java 一样,但是 Scala 没有“checked(编译期)”异常,即 Scala没有编译异常这个概念,异常都是在运行的时候捕获处理。...因此,在 catch 子句中,越具体的异常越要靠前,越普遍的异常越靠后,如果把越普遍的异常写在前,把具体的异常写在后,在 Scala 中也不会报错,但这样是非常不好的编程风格。...它向调用者函数提供了此方法可能引发此异常的信息。它有助于调用函数处理并将该代码包含在 try-catch块中,以避免程序异常终止。在 Scala 中,可以使用 throws 注解来声明异常。
b = 0::a //定义方法二:连接操作符 b: List[Int] = List(0, 1, 2, 3, 4) //将左边的元素添加到右边List的头部 scala...,表明一个转换过程,参数中的匿名函数参数x是List中得每个元素 //使用map实现全部字母大写 scala> c.map(x => x.toUpperCase) res23: List[String]...filter和map来实现对List中过滤后元素的具体操作 //下面是将奇数全部加10 scala> a.filter( _ % 2 ==1).map( _ + 10) res26: List[Int...List“打平”,将返回元素全部放在同一层 //下面就可以取出嵌套List中的偶数,注意,去除了‘外壳’ scala> complex.flatMap( _.filter( _%2 ==0)) res30...scala> s.tail.head res50: Int = 2 Scala中的tuple:元组 //元组的概念,和Python中的元组类似,可以放不用类型的变量 scala> (1,2) res51
数据类型与操作符 scala中的类型以及操作符绝大多数和Java一样,我们主要来学习 与Java不一样的一些用法 scala类型的继承体系 数据类型 基础类型 类型说明 Byte 8位带符号整数 Short...位运算符 &、||、^、> Scala 中的运算符, 基本上和Java一样, 除了: scala中没有,++、--运算符 与Java不一样,在scala中,可以直接使用==、!..., 也就是我们Scala是一种单根继承体系 类型 说明 Any 所有类型的父类,,它有两个子类AnyRef与AnyVal AnyVal 所有数值类型的父类 AnyRef 所有对象类型(引用类型)的父类...(String 本质就是Char数组, 也是引用类型哦) Unit 表示空,Unit是AnyVal的子类,它只有一个的实例{% em %}() {% endem %}它类似于Java中的void...它的实例是{% em %}null{% endem %}可以将null赋值给任何引用对象类型 Nothing 所有类型的子类不能直接创建该类型实例,某个方法抛出异常时,返回的就是
等价于java.lang.Object 可以将null 赋值给Reference Type 值类型 AnyVal 的子类 Char, Byte, Short, Int, Long, Float...private 表示主构造函数私有化,进一步保证不能被实例化 extends AnyVal 表示只能使用字面值构造实例 内置字面值 Unit 与() Unit 类型在JVM 中对应于Java...final abstract class Unit private extends AnyVal () 是其唯一的实例。...常常忽略Unit = ,Scala 默认推演为Unit 。上例等价于 def update(i: Int, value: Char) { ...}...的方法,Scala 拥有一套完备的机制增强既有类库的能力。
的函数 4.Scala中的集合类型 -----------------------------------------------------------------------------------...-------------------------- Scala中的集合类型 Scala提供了一套很好的集合实现,提供了一些集合类型的抽象。...示例: //tabulate是将匿名函数应用到数组下标的函数,并返回指定长度的数组。...如果你需要使用可变集合,你需要显式的引入 import scala.collection.mutable.Map 类 在Scala中你可以同时使用可变与不可变 Map,不可变的直接使用 Map,...元组的值是通过将单个的值包含在圆括号中构成的。 1.声明Tuple 用()来声明元组。元组是最灵活的一种数据结构。
艺术地说,Scala中的Partial Function就是一个“残缺”的函数,就像一个严重偏科的学生,只对某些科目感兴趣,而对没有兴趣的内容弃若蔽履。...在Scala中,所有偏函数的类型皆被定义为PartialFunction[-A, +B]类型,PartialFunction[-A, +B]又派生自Function1。...偏函数则更进一步,将函数求解空间中各个分支也分离出来,形成可以被组合的偏函数。 偏函数中最常见的组合方法为orElse、andThen与compose。...例如编写一个函数,要求将字符串中的数字替换为对应的英文单词,则可以实现为: val p1:PartialFunction[String, String] = { case s if s.contains...is even" case x if x % 2 == 1 => x + " is odd" } 在Twitter的Effetive Scala中,给出了一个使用map的编码风格建议: //avoid
在Scala中,函数引入传入的参数是再正常不过的事情了,比如(x: Int) => x > 0中,唯一在函数体x > 0中用到的变量是x,即这个函数的唯一参数。...除此之外,Scala还支持引用其他地方定义的变量:(x: Int) => x + more,这个函数将more也作为入参,不过这个参数是哪里来的?...如果单独使用这个函数字面量,而没有在任何处于作用域内的地方定义more,编译器将报错: scala> (x: Int) => x + more :12: error: not found...在Scala中,答案是闭包能够看到这个改变,参考下面的例子: scala> more = 9999 more: Int = 9999 scala> addMore(10) res1: Int = 10009...当你将这些闭包应用到入参时,其返回结果取决于闭包创建时more的定义 scala> inc1(10) res4: Int = 11 scala> inc9999(10) res5: Int = 10009
三、Scala类型层次结构 java的除了原始类型的所有类都有一个默认的父类Object,那么scala的统一父类是什么呢? 在Scala中,所有的值都有类型,包括数值和函数。...Any有两个直接子类:AnyVal和AnyRef。 AnyVal代表值类型。...在Scala中,每个用户自定义的类型都是AnyRef的子类型。如果Scala被应用在Java的运行环境中,AnyRef相当于java.lang.Object。...中的加减乘除 "+-*/%"可以完成和Java中相同的工作,但是有一点区别,他们都是方法。...Scala中没有++、–操作符,需要通过+=、-=来实现同样的效果。
scala数据类型介绍 Scala 与 Java有着相同的数据类型,在Scala中数据类型都是对象,也就是说scala没有java中的原生类型 Scala数据类型分为两大类 AnyVal(值类型) 和...AnyRef(引用类型), 注意:不管是AnyVal还是AnyRef 都是对象。...var num1 : Int = 10 println("num1" + num1) var char1 : Char = 'a' println("char1的code= " + char1.toInt...) 相对于java的类型系统,scala要复杂些!...也正是这复杂多变的类型系统才让面向对象编程和函数式编程完美的融合在了一起 scala数据类型体系一览图 ? scala数据类型列表 ?
Blend自带的行为MouseDragElementBehavior应用到ListBox后,如果用鼠标按住列表列拖动,没有任何效果,在多次尝试中意外发现,如果将ListBox的边框设置成一个较大值,在边框上点击时...,却可以拖动,但是一般开发中,没人会把ListBox设置一个粗粗的难看边框。
所有的 Value Classes 都继承自 AnyVal ,例如: class Wrapper(val underlying: Int) extends AnyVal 扩展已有类的方法 结合 implicit...classes ,我们可以利用 Value Class 扩展已有类的方法, Scala 基础类库中的 RichInt 就是一个很好的例子,正是因为 RichInt 定义了 toHexString 方法..., implicit class RichInt(val self: Int) extends AnyVal { def toHexString: String = java.lang.Integer.toHexString...例如我们可以创建一个表示距离的 Value Class, class Meter(val value: Double) extends AnyVal { def +(m: Meter): Meter...参考:https://docs.scala-lang.org/overviews/core/value-classes.html
这个是有人在群里问浪尖的一个问题,今天浪尖就给大家讲解一下Scala类型层次结构 在Scala中,所有的值都有类型,包括数值和函数。下图阐述了类型层次结构的一个子集。 ? 1....Scala类型层次结构 Any是所有类型的超类型,也称为顶级类 型。它定义了一些通用的方法如equals、hashCode和toString。Any有两个直接子类:AnyVal和AnyRef。...AnyVal代表值类型。有9个预定义的非空的值类型分别是:Double、Float、Long、Int、Short、Byte、Char、Unit和Boolean。...在Scala中,每个用户自定义的类型都是AnyRef的子类型。如果Scala被应用在Java的运行环境中,AnyRef相当于java.lang.Object。...这个列表里由多种类型进行初始化,但是它们都是scala.Any的实例,所以可以把它们加入到列表中。 下面是程序的输出: a string732ctrue 2.
Swig支持自定义filter和tag,可以将内容个性化。 假如我们需要展示成这样: ?...Paste_Image.png 其中的“状态”字段,可以通过swig的自定义filter功能,将其渲染在页面上,而不需要在页面上直接写html代码。...filter显示: {{ a.status | status}} 结果大大出乎我们的意料: ?...Paste_Image.png 没错,直接将html代码当作文本输出了!显然这不是我们想要的结果,那么怎么解决这个问题呢?...,意思就是说自动控制输出的转义。那么能不能解决我们的问题呢?答案是肯定的,完美解决了我们的问题!
类 图片展示了Scala的类层次结构。每一个类都继承自scala.Any,Any的子类可以划分为两个主要的范畴:值类型,继承自scala.AnyVal;引用类型,继承scala.AnyRef。...每一种Java的基本数据类型对应于值类型,通过预定义的类型别名进行映射,而AnyRef则对应于Java环境中的根类:java.lang.Object。...需要注意的是值类型类空间是平行的,即所有的值类型都继承自scala.AnyVal,但是值类型之间不存在任何关系,比如继承关系。作为替代,值类型之间有视图(隐式类型转换)。...Nothing是所有其它类型的子类,这个类没有任何实例,但是它可以作为类型参数体现价值,比如Nil就是List[Nothing]的实例,而Scala中List是协变的,从而对于所有的类型T,Nil 都是...Student) //程序没有问题,可以说明List是协变的 关于==,equals,eq:在Scala中,==相当于是equals的别名,用于比较值是否相等,而eq 用于比较引用是否相等: val
领取专属 10元无门槛券
手把手带您无忧上云