SCALA 手账
首页 归档 分类 标签 关于
首页 归档 分类 标签 关于

分类  

  •   scala学习
    • 准备开发环境
    • 快速体验Scala - Scasite
    • 快速体验Scala - 交互式编程
    • 使用注释
    • 基本类型
    • 运算符和优先级
    • var和val变量
    • 字符串和多行字符串
    • 类定义和构造器
    • 类继承
    • 单例、独立对象和伴生对象
    • 访问修饰符
    • 循环和循环控制
    • 方法的定义
    • for循环详述
    • 方法VS函数
    • package的使用
    • 关于import
    • 传名参数 =>Unit
    • 部分应用函数
    • 偏函数
    • Curry化
    • Executor Aroud模式
    • 闭包
    • 数组
    • Trait
    • trait选择性混入
    • trait方法延迟绑定
    • trait和抽象类
    • implicit-scala隐式处理
    • scala集合概述
    • 模式匹配
    • 模式变量和模式常量
    • 集合操作partition
    • 集合操作group
  •   scala技巧
    • 使用yield关键字
    • 使用变长参数
    • scala赋值符号“=”
    • scala等于符号“==”
    • object中的main方法
    • scala中的自适应做法
    • 可变长度参数
    • 方法的点和括号是可选的
    • 下划线的作用
    • 参数中的 =>U 和 ()=>U
    • 参数默认值
    • 带名称的参数值
    • scala字符串插值
    • 下划线和参数
    • apply方法
    • update方法
    • unapply方法
    • 一元操作符
    • 以冒号结尾的方法
    • 异常处理
    • 判断相等:eq()、equal()和==
  •   scala探索
    • 偏函数
  • scala手账 - 主页

#操作符

一元操作符

2018-06-11
scala技巧
操作符
robin © 2020
Powered by Hexo. Theme - wikitten
文章
集合操作group

在scala的集合中有如下几种group操作: groupBy:按集合元素的特征值将集合拆分成Map结构 grouped:将集合拆分成指定长度的子集合 grou

集合操作partition

简单介绍下scala集合中的partition操作。确切地说,该方法是属于scala.Iterable的。 根据文档来看,该方法的作用是通过一个predicat

判断相等:eq()、equal()和==

scala中提供了三个常用的判断相等的方法,分别是eq()、equal()和==。其中eq()和equal()两个方法是判断相等与否的具体实现,而“==”是对二

模式变量和模式常量

在进行模式匹配时可以使用模式常量和模式变量。 模式匹配中的占位符即为模式变量。 关于模式常量可以看下下面的示例: 1234567891011121314clas

异常处理

下面是一段异常处理的代码: 1234567try { println("start....") throw new RuntimeException&

模式匹配

概述在java中有switch/case这样的模式匹配语句,可以匹配的类型包括int,byte,char,short, enum,在java8又支持了字符串。

unapply方法

对于unapply方法,先来看一个实例: 1234567891011121314151617object Coder { def unapply(st

update方法

之前有介绍过apply方法,比如下面的代码:1foo(arg1, arg2, ...) 如果foo不是一个函数或者方法, 那么这个表达式等同于调用apply方法

一元操作符

一元操作符是前置操作符,同“:”结尾的方法一样,也是以其后的实例为目标的。 一元操作符包括+、-、!和~。 在调用的时候一元操作符被转化为名为“unary_ +

以冒号结尾的方法

这里说的是一个命名约定:如果方法以冒号(:)结尾,则调用目标是运算符后面的实例。 比如下面这个例子: 12345678910111213class Cow &#

scala集合概述

可变与不可变scala的集合包括Set、List和Map。三种集合的特征和Java中的一样。scala为每种集合都提供了可变和不可变两种版本,分别位于scala

apply方法

scala的apply方法有一个特性:就是在调用apply方法的时候可以省略方法名,即可以用 “类名或实例名 + ([参数列表])”这样的形式来使用。 scal

implicit-scala隐式处理

概述先来看看下面的内容:122 days “ago”5 days “from_now” 这段内容大家怎么看。首先这确定是一段代码(不是代码也没有必要提了),但是

trait和抽象类

发现前面多次提到了抽象类,可是却从没有正式的介绍过抽象类这个概念。在这里一起说下。 抽象类scala的抽象类的定义和Java的差不多。使用了关键词abstrac

trait方法延迟绑定

关于延迟绑定上一节已经提到过了。这次再专门说一下。 延迟绑定简单来说就是先混入的trait的方法会后调用。 再来看一个例子: 12345678910111213

trait选择性混入

描述上一节有说过如何在类级别混入trait,还举了一个人类的朋友Dog的例子。代码是这样的: 123456789trait HumanFriend {

Trait

概述不知道大家对java的接口是如何理解的。在我刚接触到接口这个概念的时候,我将接口理解为一系列规则的集合,认为接口是对类的行为规范。不过现在又有了想的看法:如

数组

简单说下scala中的数组。 声明数组声明数组的语法:1val arr = new Array[String]3 声明数组时必须指定数组的长度。数组的类

闭包

概念关于闭包的概念,我手边scala的书如是说: 闭包是一种特殊的函数值,闭包中封闭或绑定了在另一个作用域或上下文中定义的变量。 在维基百科中的说法是: 在计算

Executor Aroud模式

我们访问资源需要关注对资源的锁定、对资源的申请和释放,还要考虑可能遇到的各种异常。这些事项本身与代码的逻辑操作无关,但我们不能遗漏。也就是说需要在进入方法时获取

下划线和参数

在Scala里,下划线(_)可以表示函数值的参数。如果某个参数在函数里仅使用一次,就可以用下划线表示。每次在函数里用下划线,都表示随后的参数。 12val ar

Curry化

概述Curry化也称柯里化。以Haskell发明人 Haskell Curry 命名。 scala里的curry化可以把函数从接收多个参数转换成接收多个参数列表

偏函数

偏函数名字已经说明了很多东西:在执行上偏函数是存在偏颇的。具体来说偏函数有这样几类特征: 偏函数的参数只有一个 偏函数不会处理参数类型范围内的所有值,对不处理的

偏函数

概述scala的部分应用函数英文名为Partial Apply Function。此外,还有一个英文名为Partial Function的概念,即偏函数。 普通

部分应用函数

scala的部分应用函数(也可以成为偏应用函数),是一种特殊的表达式。使用部分应用函数让我们在调用一个方法时可以不必提供全部的参数,只需要提供部分参数,或者完全

scala字符串插值

简介自2.10.0版本开始,Scala提供了一种新的机制来根据数据生成字符串:字符串插值。字符串插值允许使用者将变量引用直接插入处理过的字面字符中。如下例:12

带名称的参数值

先来看一段代码,看看执行后会输出什么:123456789object MyApp extends App { def showValue(x: Int

参数默认值

Scala可以为方法参数指定默认值。使用了默认参数,在调用方法时可以不需要再传递参数,此时函数就会调用默认参数值,如果传递了参数值,则传递值会取代默认值。 举个

参数中的 =>U 和 ()=>U

在scala参数中会遇到=>U 或者 ()=>U。U表示返回值类型。简单说下二者的区别。 =>U是一个传名参数,表示一个无参方法。 ()=&g

传名参数 =>Unit

Scala的解释器在解析函数参数(function arguments)时有两种方式: 传值调用(call-by-value):先计算参数表达式的值,再应用到函

关于import

介绍几个import相关的特性 特性一: 用import com.zhyea._这种格式,可以导入包下所有的成员 特性二: 与java不同,scala在任何地方

下划线的作用

相关概念暂未能了解,提供两个参考文档: Usage of Underscore In ScalaScala中下划线的应用场景

package的使用

这一节介绍一些关于package的内容。本来不想写关于package的内容的,因为一开始觉得没啥好写的。这次写因为发现了点儿可以写的内容。 package定义s

方法的点和括号是可选的

在scala中,如果方法只有0或1个参数,点和括号就是可选的;如果方法的参数多于1个,就必须使用括号,但是点仍然是可选的。 比如我们常见的 1 + 2,实际上就

可变长度参数

scala支持可变长度参数。在scala中,可变长度参数的特征如下: 在参数列表中处于最后面; 标识方法为在参数类型后放一个星号。 在scala解释器中写了一个

for循环详述

scala的for循环能做的事情很多,这里简单介绍下。 遍历集合元素示例代码如下:12345val list = List(1, 2, 3)for (e <

方法VS函数

在scala中,我们可以认为函数和方法是两个不同的概念——尽管很多时候它们是通用的。这一节简单介绍下二者之间的关系。 方法和函数的不同函数在定义和调用等方面有着

scala中的自适应做法

scala有一些默认做法,会让代码更简洁、更易读写,下面列出了这样几个特性: 支持脚本。scala支持脚本,因此无须将所有的代码都放到类里。如果脚本可以满足需求

object中的main方法

scala对象的main方法可以作为应用或脚本的入口。 来看一个简单的实例:123456object MyApp { def main(args: A

方法的定义

scala的方法关键字def声明开始。大致结构如下:1234def methodName ([list of parameters]) : [return ty

循环和循环控制

循环类型scala中的循环类型和java差不多,大体上有三种: while循环 do{}while循环 for循环 每样循环都写一段示例代码来看一下。 whil

scala等于符号“==”

在java中,基本类型和引用类型对==运算有着不同的解释方式: 对于基本类型来说,==运算比较的就是两边表达式的值; 对于引用类型来说,==运算比较的是两边对象

scala赋值符号“=”

scala的赋值运算和java的赋值运算有着很大的不同。如a=b这样的赋值运算,在Java中的返回值是a的值,在scala中返回的则是Unit。Unit是值类型

访问修饰符

先简单介绍下scala访问修饰符的几个特性,稍后再详细解释: 如果不指定访问修饰符,默认为public; 较之Java,scala对protected的定义更加

使用变长参数

在Java中是可以使用变长参数的,如下面的方法:12345public void check(String... args) { for (Strin

使用yield关键字

基础用法使用yield关键字可以存储for循环返回值。每次循环时,返回值都会存储到一个结构中。在循环完成后,会将结构中的所有值一起返回。存储返回值的结构,和循环

单例、独立对象和伴生对象

scala单例单例模式大家都很熟悉了,简单地说就是使用单例模式的类一个类只能有一个实例。 在scala中创建单例对象非常简单,创建类时使用object关键字替换

类继承

在scala里,类继承有两点限制: 重写方法需要使用override关键字; 只有主构造函数才能往父类构造函数中传参数。 在java1.5中引入了overrid

类定义和构造器

这次会通过与Java比较的方式来说明scala是如何创建类的。 类定义假设我们要定义一个学生类,先来看一下使用Java是如何定义的:12345678910111

字符串和多行字符串

scala中的字符串类就是java中的java.lang.String类。不过scala也为String提供了一个富封装类:scala.runtime.Rich

var和val变量

变量声明前面我们提过,在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开发环境后,打开命令行工具,输入scala就可以进入sca

快速体验Scala - Scasite

前面一节简略说了Scala开发环境的准备工作。如果还没有安装Scala的开发环境,也可以快速在Scasite上快速体验一下。 还是按传统,来一个HelloWor

scala手账 - 主页

scala学习: 准备开发环境 快速体验scala - Scasite 快速体验scala - 交互式编程 使用注释 基本类型 运算符和优先级 val和var变

准备开发环境

Scala开发环境准备步骤如下: 安装JDK环境,建议选择JDK8版本 安装Scala开发环境,选择最新版就行 聊作解释:建议JDK选择1.8是因为稍后会用到G

页面
Categories
About
Tags
分类
scala学习scala学习
scala技巧scala技巧
scala探索scala探索
标签
groupgroup
partitionpartition
eqeq
equalequal
相等相等
等号等号
模式变量模式变量
模式常量模式常量
trytry
catchcatch
异常异常
matchmatch
casecase
模式匹配模式匹配
unapplyunapply
提取器提取器
updateupdate
操作符操作符
coloncolon
冒号冒号
集合集合
ListList
SetSet
MapMap
applyapply
implicitimplicit
traittrait
抽象类抽象类
数组数组
闭包闭包
下划线下划线
柯里化柯里化
Curry化Curry化
偏函数偏函数
单例单例
对象对象
伴生对象伴生对象
类继承类继承
类定义类定义
字符串字符串
变量变量
运算符运算符
优先级优先级
基本类型基本类型
commentcomment
注释注释
交互式解释器交互式解释器
scala学习scala学习
准备准备