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解释器及其环境 ...
随机推荐
- 持续集成与Devops关系
什么是持续集成 持续集成(Continuous Integration,简称CI),是一种软件开发实践,在实践中指只要代码有变更,就自动运行构建和测试,反馈运行结果.通俗一点来讲,就是绑定项目的代码仓 ...
- Nuget使用时遇到的问题,Solved
在VS的程序包管理控制台中输入Install-package MySql.Data时,默认安装最新的版本8.0.18, 但是安装完成后,发现包并没有添加到项目的引用列表中, 在解决方案的package ...
- 工作日志,go get -v -x github.com/pebbe/zmq4 失败问题
工作日志,go get -v -x github.com/pebbe/zmq4 失败问题 笔者因为工作需要使用ZeroMQ,但是在执行go get -v -x github.com/pebbe/zmq ...
- centos7.6使用openssl生成CA签署的证书个人实验笔记
准备:客户端centos6.10 服务端Centos7.6 实验:客户端生成证书请求,服务端颁发证书,最后吊销其中一个证书 1.先在服务端上的/etc/pki/CA/目录生成rsa的私钥: 2.在服 ...
- appium---App页面滑动
我们操作app的过程中都会进行页面滑动,那么这个过程通过python怎么实现呢? 如何滑动 大家都非常的清楚我们手动在app上是如何滑动的,然后自动化只是模仿了手工的方法去实现,我们通过一个图来分析 ...
- Make Them Odd
time limit per test3 secondsmemory limit per test256 megabytesinput: standard inputoutput: standard ...
- Noip2015Day2T3 运输计划
题目链接 problem 一棵n个点带边权的树,有m个条路径.选择一条边,将其权值变为0,使得长度最长的路径长度最小.求该长度最小为多少. solution 其实仔细一想并不难. 删除一条边会导致所有 ...
- Noip2018Day1T3 赛道修建
题目链接 problem 给出一棵有边权的树.一条链的权值定义为该链所经过的边的边权值和.需要选出\(m\)条链,求\(m\)条链中权值最小的链的权值最大是多少. solution 首先显然二分. 然 ...
- Educational Codeforces Round 76 (Rated for Div. 2) E. The Contest dp
E. The Contest A team of three programmers is going to play a contest. The contest consists of
- CF582E Boolean Function(DP,状态压缩,FMT)
简单题. 我第二道自己做出来的 2900 没毛病,我没切过 2800 的题 lqy:"CF 评分 2800 是中等难度" 我活个啥劲啊 为了方便(同时压缩状态个数),先建出表达式树 ...