在scala的集合中有如下几种group操作: groupBy:按集合元素的特征值将集合拆分成Map结构 grouped:将集合拆分成指定长度的子集合 grou
简单介绍下scala集合中的partition操作。确切地说,该方法是属于scala.Iterable的。 根据文档来看,该方法的作用是通过一个predicat
scala中提供了三个常用的判断相等的方法,分别是eq()、equal()和==。其中eq()和equal()两个方法是判断相等与否的具体实现,而“==”是对二
在进行模式匹配时可以使用模式常量和模式变量。 模式匹配中的占位符即为模式变量。 关于模式常量可以看下下面的示例: 1234567891011121314clas
下面是一段异常处理的代码: 1234567try { println("start....") throw new RuntimeException&
概述在java中有switch/case这样的模式匹配语句,可以匹配的类型包括int,byte,char,short, enum,在java8又支持了字符串。
对于unapply方法,先来看一个实例: 1234567891011121314151617object Coder { def unapply(st
之前有介绍过apply方法,比如下面的代码:1foo(arg1, arg2, ...) 如果foo不是一个函数或者方法, 那么这个表达式等同于调用apply方法
一元操作符是前置操作符,同“:”结尾的方法一样,也是以其后的实例为目标的。 一元操作符包括+、-、!和~。 在调用的时候一元操作符被转化为名为“unary_ +
这里说的是一个命名约定:如果方法以冒号(:)结尾,则调用目标是运算符后面的实例。 比如下面这个例子: 12345678910111213class Cow &#
可变与不可变scala的集合包括Set、List和Map。三种集合的特征和Java中的一样。scala为每种集合都提供了可变和不可变两种版本,分别位于scala
scala的apply方法有一个特性:就是在调用apply方法的时候可以省略方法名,即可以用 “类名或实例名 + ([参数列表])”这样的形式来使用。 scal
概述先来看看下面的内容:122 days “ago”5 days “from_now” 这段内容大家怎么看。首先这确定是一段代码(不是代码也没有必要提了),但是
发现前面多次提到了抽象类,可是却从没有正式的介绍过抽象类这个概念。在这里一起说下。 抽象类scala的抽象类的定义和Java的差不多。使用了关键词abstrac
关于延迟绑定上一节已经提到过了。这次再专门说一下。 延迟绑定简单来说就是先混入的trait的方法会后调用。 再来看一个例子: 12345678910111213
描述上一节有说过如何在类级别混入trait,还举了一个人类的朋友Dog的例子。代码是这样的: 123456789trait HumanFriend {
概述不知道大家对java的接口是如何理解的。在我刚接触到接口这个概念的时候,我将接口理解为一系列规则的集合,认为接口是对类的行为规范。不过现在又有了想的看法:如
简单说下scala中的数组。 声明数组声明数组的语法:1val arr = new Array[String]3 声明数组时必须指定数组的长度。数组的类
概念关于闭包的概念,我手边scala的书如是说: 闭包是一种特殊的函数值,闭包中封闭或绑定了在另一个作用域或上下文中定义的变量。 在维基百科中的说法是: 在计算
我们访问资源需要关注对资源的锁定、对资源的申请和释放,还要考虑可能遇到的各种异常。这些事项本身与代码的逻辑操作无关,但我们不能遗漏。也就是说需要在进入方法时获取
在Scala里,下划线(_)可以表示函数值的参数。如果某个参数在函数里仅使用一次,就可以用下划线表示。每次在函数里用下划线,都表示随后的参数。 12val ar
概述Curry化也称柯里化。以Haskell发明人 Haskell Curry 命名。 scala里的curry化可以把函数从接收多个参数转换成接收多个参数列表
偏函数名字已经说明了很多东西:在执行上偏函数是存在偏颇的。具体来说偏函数有这样几类特征: 偏函数的参数只有一个 偏函数不会处理参数类型范围内的所有值,对不处理的
概述scala的部分应用函数英文名为Partial Apply Function。此外,还有一个英文名为Partial Function的概念,即偏函数。 普通
scala的部分应用函数(也可以成为偏应用函数),是一种特殊的表达式。使用部分应用函数让我们在调用一个方法时可以不必提供全部的参数,只需要提供部分参数,或者完全
简介自2.10.0版本开始,Scala提供了一种新的机制来根据数据生成字符串:字符串插值。字符串插值允许使用者将变量引用直接插入处理过的字面字符中。如下例:12
先来看一段代码,看看执行后会输出什么:123456789object MyApp extends App { def showValue(x: Int
Scala可以为方法参数指定默认值。使用了默认参数,在调用方法时可以不需要再传递参数,此时函数就会调用默认参数值,如果传递了参数值,则传递值会取代默认值。 举个
在scala参数中会遇到=>U 或者 ()=>U。U表示返回值类型。简单说下二者的区别。 =>U是一个传名参数,表示一个无参方法。 ()=&g
Scala的解释器在解析函数参数(function arguments)时有两种方式: 传值调用(call-by-value):先计算参数表达式的值,再应用到函
介绍几个import相关的特性 特性一: 用import com.zhyea._这种格式,可以导入包下所有的成员 特性二: 与java不同,scala在任何地方
相关概念暂未能了解,提供两个参考文档: Usage of Underscore In ScalaScala中下划线的应用场景
这一节介绍一些关于package的内容。本来不想写关于package的内容的,因为一开始觉得没啥好写的。这次写因为发现了点儿可以写的内容。 package定义s
在scala中,如果方法只有0或1个参数,点和括号就是可选的;如果方法的参数多于1个,就必须使用括号,但是点仍然是可选的。 比如我们常见的 1 + 2,实际上就
scala支持可变长度参数。在scala中,可变长度参数的特征如下: 在参数列表中处于最后面; 标识方法为在参数类型后放一个星号。 在scala解释器中写了一个
scala的for循环能做的事情很多,这里简单介绍下。 遍历集合元素示例代码如下:12345val list = List(1, 2, 3)for (e <
在scala中,我们可以认为函数和方法是两个不同的概念——尽管很多时候它们是通用的。这一节简单介绍下二者之间的关系。 方法和函数的不同函数在定义和调用等方面有着
scala有一些默认做法,会让代码更简洁、更易读写,下面列出了这样几个特性: 支持脚本。scala支持脚本,因此无须将所有的代码都放到类里。如果脚本可以满足需求
scala对象的main方法可以作为应用或脚本的入口。 来看一个简单的实例:123456object MyApp { def main(args: A
scala的方法关键字def声明开始。大致结构如下:1234def methodName ([list of parameters]) : [return ty
循环类型scala中的循环类型和java差不多,大体上有三种: while循环 do{}while循环 for循环 每样循环都写一段示例代码来看一下。 whil
在java中,基本类型和引用类型对==运算有着不同的解释方式: 对于基本类型来说,==运算比较的就是两边表达式的值; 对于引用类型来说,==运算比较的是两边对象
scala的赋值运算和java的赋值运算有着很大的不同。如a=b这样的赋值运算,在Java中的返回值是a的值,在scala中返回的则是Unit。Unit是值类型
先简单介绍下scala访问修饰符的几个特性,稍后再详细解释: 如果不指定访问修饰符,默认为public; 较之Java,scala对protected的定义更加
在Java中是可以使用变长参数的,如下面的方法:12345public void check(String... args) { for (Strin
基础用法使用yield关键字可以存储for循环返回值。每次循环时,返回值都会存储到一个结构中。在循环完成后,会将结构中的所有值一起返回。存储返回值的结构,和循环
scala单例单例模式大家都很熟悉了,简单地说就是使用单例模式的类一个类只能有一个实例。 在scala中创建单例对象非常简单,创建类时使用object关键字替换
在scala里,类继承有两点限制: 重写方法需要使用override关键字; 只有主构造函数才能往父类构造函数中传参数。 在java1.5中引入了overrid
这次会通过与Java比较的方式来说明scala是如何创建类的。 类定义假设我们要定义一个学生类,先来看一下使用Java是如何定义的:12345678910111
scala中的字符串类就是java中的java.lang.String类。不过scala也为String提供了一个富封装类:scala.runtime.Rich
变量声明前面我们提过,在scala中声明变量使用var和val都是可行的。其中val是value(值)的简写,var指的是variant(变量)。 用val声明
运算符从语法上来说scala是没有运算符的。scala的运算符实际上是方法名,如1 + 2实际上就是1.+(2)。这些方法之所以能像运算符一样使用,是因为sca
先声明一点,scala中是没有基本数据类型的。在scala中一切都是对象。 在Java中数据类型分为基本类型和引用类型。虽然在JDK1.5以后引入了自动装箱和自
简单说下scala中的注释。scala的注释和java的注释是一样的,同样有多行注释和单行注释,使用方法也是一样的。 这里是一段示例代码:12345678910
scala提供的交互式解释器也是一种快速体验scala的一种方式。 使用交互式解释器在安装好scala开发环境后,打开命令行工具,输入scala就可以进入sca
前面一节简略说了Scala开发环境的准备工作。如果还没有安装Scala的开发环境,也可以快速在Scasite上快速体验一下。 还是按传统,来一个HelloWor
scala学习: 准备开发环境 快速体验scala - Scasite 快速体验scala - 交互式编程 使用注释 基本类型 运算符和优先级 val和var变
Scala开发环境准备步骤如下: 安装JDK环境,建议选择JDK8版本 安装Scala开发环境,选择最新版就行 聊作解释:建议JDK选择1.8是因为稍后会用到G