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解释器及其环境 ...
随机推荐
- PlayJava Day015
今日所学: /* 2019.08.19开始学习,此为补档. */ StringBuffer 定义: 可变字符序列 - 线程安全的 作用:基本与String相同,也是用于描述字符串 与String的区别 ...
- linux脚本判断当前的linux版本是6还是7
#!/bin/sh version="release 7." release=$(cat /etc/redhat-release) echo $release result=$(e ...
- Xcode更新到10.0之后遇到的那些坑:
1.之前不在一个文件里的图片可以重新,更新之后图片不能重名了. 2.之前的双击.h.m文件不能重新开出个界面了 3. 4. ...... 未完待续
- RDIFramework.NET敏捷开发框架WinForm新增文件中心-实现附件集中管理
1.引言 文件中心类似附件管理是一个非常实用功能,可以归档自己平时所需要的文件,也可以把文件分享给别人,更像一个知识中心.文件中心主界面如下图所示,左侧"附件分类"展示了用户对文件 ...
- vue中简单的数据请求 fetch axios
fetch 不需要额外的安装什么东西,直接就可以使用 fetch(url, { method:'post', headers: { 'Content-Type': 'application/x-www ...
- <Array> 309 (高)334
309. Best Time to Buy and Sell Stock with Cooldown class Solution { public int maxProfit(int[] price ...
- STL pair类型的介绍
pair标准库类型它定义在头文件utility中. 一个pair保存两个数据成员.类似容器,pair是一个用来生成特定类型的模板.当创建一个pair时,我们必须提供两个类型名,pair的数据成员将具有 ...
- .NET Core 序列化对象输出字节数大小比较
写代码验证了一下 .NET Core 中序列化对象输出字节数大小,.NET Core 版本是 3.0.100-preview8-013656 ,对象属性使用了 Guid 与 DateTime 类型,胜 ...
- 【STM32H7教程】第24章 STM32H7的Cache解读(非常重要)
完整教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第24章 STM32H7的Cache解读(非常重要 ...
- Vs Code 2019软件安装教程及常用的入门设置
小编认为VsCode是一款非常好用的编辑器,插件丰富,支持的语言种类非常多.我所使用VsCode主要打一些前端的代码,自己感觉very good. 点击运行. 按图所示操作. 安装教程很简单的,主要是 ...