scala 语法速查
摘自官网
| variables | ||
Good
|
Variable. | |
Bad
|
Constant. | |
|
Explicit type. | |
| functions | ||
Good
Bad
|
Define function. Hidden error: without = it’s a procedure returning Unit; causes havoc. Deprecated in Scala 2.13. |
|
Good
Bad
|
Define function. Syntax error: need types for every arg. |
|
|
Type alias. | |
vs.
|
Call-by-value.
Call-by-name (lazy parameters). |
|
|
Anonymous function. | |
vs.
|
Anonymous function: underscore is positionally matched arg. | |
|
Anonymous function: to use an arg twice, have to name it. | |
|
Anonymous function: block style returns last expression. | |
|
Anonymous functions: pipeline style (or parens too). | |
|
Anonymous functions: to pass in multiple blocks, need outer parens. | |
|
Currying, obvious syntax. | |
|
Currying, obvious syntax. | |
|
Currying, sugar syntax. But then: | |
|
Need trailing underscore to get the partial, only for the sugar version. | |
|
Generic type. | |
|
Infix sugar. | |
|
Varargs. | |
| packages | ||
|
Wildcard import. | |
|
Selective import. | |
|
Renaming import. | |
|
Import all from java.util except Date. |
|
At start of file:
Packaging by scope:
Package singleton:
|
Declare a package. | |
| data structures | ||
|
Tuple literal (Tuple3). |
|
|
Destructuring bind: tuple unpacking via pattern matching. | |
Bad
|
Hidden error: each assigned to the entire tuple. | |
|
List (immutable). | |
|
Paren indexing (slides). | |
|
Cons. | |
same as
|
Range sugar. | |
|
Empty parens is singleton value of the Unit type. Equivalent to void in C and Java. |
|
| control constructs | ||
|
Conditional. | |
same as
|
Conditional sugar. | |
|
While loop. | |
|
Do-while loop. | |
|
Break (slides). | |
same as
|
For-comprehension: filter/map. | |
same as
|
For-comprehension: destructuring bind. | |
same as
|
For-comprehension: cross product. | |
|
For-comprehension: imperative-ish.sprintf style. |
|
|
For-comprehension: iterate including the upper bound. | |
|
For-comprehension: iterate omitting the upper bound. | |
| pattern matching | ||
Good
Bad
|
Use case in function args for pattern matching. | |
Bad
|
v42 is interpreted as a name matching any Int value, and “42” is printed. |
|
Good
|
`v42` with backticks is interpreted as the existing val v42, and “Not 42” is printed. |
|
Good
|
UppercaseVal is treated as an existing val, rather than a new pattern variable, because it starts with an uppercase letter. Thus, the value contained within UppercaseVal is checked against 3, and “Not 42” is printed. |
|
| object orientation | ||
|
Constructor params - x is only available in class body. |
|
|
Constructor params - automatic public member defined. | |
|
Constructor is class body. Declare a public member. Declare a gettable but not settable member. Declare a private member. Alternative constructor. |
|
|
Anonymous class. | |
|
Define an abstract class (non-createable). | |
|
Define an inherited class. | |
|
Inheritance and constructor params (wishlist: automatically pass-up params by default). | |
|
Define a singleton (module-like). | |
|
Traits. Interfaces-with-implementation. No constructor params. mixin-able. |
|
|
Multiple traits. | |
|
Must declare method overrides. | |
|
Create object. | |
Bad
Good
|
Type error: abstract type. Instead, convention: callable factory shadowing the type. |
|
|
Class literal. | |
|
Type check (runtime). | |
|
Type cast (runtime). | |
|
Ascription (compile time). | |
| options | ||
|
Construct a non empty optional value. | |
|
The singleton empty optional value. | |
but
|
Null-safe optional value factory. | |
same as
|
Explicit type for empty optional value. Factory for empty optional value. |
|
|
Pipeline style. | |
|
For-comprehension syntax. | |
same as
|
Apply a function on the optional value. | |
same as
|
Same as map but function must return an optional value. | |
same as
|
Extract nested option. | |
same as
|
Apply a procedure on optional value. | |
same as
|
Apply function on optional value, return default if empty. | |
same as
|
Apply partial pattern match on optional value. | |
same as
|
true if not empty. |
|
same as
|
true if empty. |
|
same as
|
true if not empty. |
|
same as
|
0 if empty, otherwise 1. |
|
same as
|
Evaluate and return alternate optional value if empty. | |
same as
|
Evaluate and return default value if empty. | |
same as
|
Return value, throw exception if empty. | |
same as
|
Return value, null if empty. |
|
same as
|
Optional value satisfies predicate. | |
same as
|
Optional value doesn't satisfy predicate. | |
same as
|
Apply predicate on optional value or false if empty. |
|
same as
|
Apply predicate on optional value or true if empty. |
|
same as
|
scala 语法速查的更多相关文章
- Markdown 语法速查表
Markdown 语法速查表 1 标题与文字格式 标题 # 这是 H1 <一级标题> ## 这是 H2 <二级标题> ###### 这是 H6 <六级标题> 文 ...
- Python语法速查: 4. 字符串常用操作
返回目录 (1)字符串常用方法 Python3中,字符串全都用Unicode形式,所以省去了很多以前各种转换与声明的麻烦.字符串属于序列,所有序列可用的方法(比如切片等)都可用于字符串. 注意:字符串 ...
- Python语法速查:目录
1. 数据类型与内置函数 2. 列表.元组.字典.集合操作 3. 字符串格式化 4. 字符串常用操作 5. 运算符.math模块.表达式 6. 循环与迭代 7. 函数基础 8. 类与对象 9. 函数进 ...
- IE各版本CSS Hack(兼容性处理)语法速查表
为了兼容IE各个版本,需要在CSS中添加额外的代码,比如以前常用的_width.之所以工作,是因为浏览器会忽略不能解析的样式规则,因此举个例子来说,把_width写在width下面,对于非IE浏览器会 ...
- perl 语法速查
同时学perl.python和shell脚本会很容易将它们的语法搞混,本文主要是一个个人的总结,方便要用时的查询. perl基本语法.安装.帮助文档 文件头格式: #!/usr/bin/perl us ...
- xpath语法速查
xpath的具体学习可以通过w3c查看(链接:http://www.w3school.com.cn/xpath/index.asp) 这里只是将平时用到的几个表格贴出来,以后查询: 这里的xpath我 ...
- Transact-SQL语法速查手册
第1章 Transact-SQL基础 1.1 标识符 一.常规标识符 1. 命名规则: l 第一个字母必须是Unicode2.0标准定义的字母.下划线.at符号(@)和数字符号(#): l 后续字符可 ...
- Python语法速查: 15. 常用数据结构
返回目录 本篇索引 (1)array (2)bisect (3)deque (4)defaultdict (5)namedtuple (6)heapq (7)itertools (1)array ar ...
- Python语法速查: 13. 操作系统服务
返回目录 本篇索引 (1)sys模块 (2)os模块 (3)与Windows相关模块 (4)subprocess模块 (5)signal模块 (1)sys模块 sys模块用于Python解释器及其环境 ...
随机推荐
- attempted to return null from a method with a primitive return type (int).
java接口文件 package com.cyb.ms.mapper; import org.apache.ibatis.annotations.Param; public interface Acc ...
- Vue结合后台导入导出Excel问题详解
话不多说,直接上前端代码 axios({ method: 'post', url: 'http://localhost:19090/exportUser',//这个是请求的地址 params: {// ...
- Spring Boot 2 读取配置文件
开发环境:IntelliJ IDEA 2019.2.2Spring Boot版本:2.1.8 新建一个名称为demo的Spring Boot项目. 一.默认配置文件 Spring Boot会读取名称a ...
- ABP入门教程14 - 更新多语言
点这里进入ABP入门教程目录 设置语种 新增语种 数据库操作 打开多语言表AbpLanguages,添加一条记录. 程序操作 在基础设施层(即JD.CRS.EntityFrameworkCore)的\ ...
- 安装 tensorflow 1.1.0;以及安装其他相似版本tensorflow遇到的问题;tensorflow 1.13.2 cuda-10环境变量配置问题;Tensorflow 指定训练时如何指定使用的GPU;
# 安装 2.7 环境conda create -n python2. python= conda activate python2. # 安装 1.1.0 gpu版本pip # 配置环境变量expo ...
- Django—版本和环境的搭建
1.安装 virtualenv virtualenvwrapper [root@localhost ~]# pip install virtualenv virtualenvwrapper 2.查找 ...
- 05_javaSE面试题:成员变量和局部变量
题目 /** * 类变量:static修饰的 * 实例变量:不是static修饰的 * * 局部变量:栈 * 实例变量:堆 * 类变量:方法区 * @author kevin * @date 2019 ...
- 剑指Offer-28.数组中出现次数超过一半的数字(C++/Java)
题目: 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字.例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}.由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2.如 ...
- Java四个关键字 this super final static
一.this 关键字主要有三个应用: this调用本类中的属性,也就是类中的成员变量: this调用本类中的其他方法: this调用本类中的其他构造方法初始化对象,调用时要放在构造方法的首行. 引 ...
- tensorflow2.0安装
版本: python3.5 Anaconda 4.2.0 tensorflow2.0 cpu版本 1.安装命令 pip3 install tensorflow==2.0.0.0a0 -i https: ...