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解释器及其环境 ...
随机推荐
- google跟踪代码管理器gtm无法给相同class元素绑定click事件埋点解决
Google 跟踪代码管理器是一个跟踪代码管理系统 (TMS),可以帮助您快速轻松地更新网站或移动应用上的跟踪代码及相关代码段(统称为“代码”).将一小段跟踪代码管理器代码添加到项目后,您可以通过网页 ...
- OpenCV:图像的按位运算
首先导包: import numpy as np import cv2 import matplotlib.pyplot as plt def show(image): plt.imshow(imag ...
- 简单的jquery表单验证+添加+删除+全选/反选
//布局 <body> <h4><a href="#">首页</a>><a href="#"> ...
- Mysql存储过程--大于十分钟执行
--存储过程 DELIMITER | DROP PROCEDURE IF EXISTS update_tatus | CREATE PROCEDURE update_status() BEGIN mi ...
- android binder 进程间通信机制5-Service注册和代理对象的获取
ServiceManager,其实也是一个Service,不过它的Server端实现并未使用Binder库的结构实现,而是直接打开binder/dev进行通信的,不具有普遍性. 下面以MediaSer ...
- Linux:源代码安装及脚本安装的使用
由于这两个安装方法比较少,就没有单独分开来写 源代码安装 源码安装的步骤 (1)对下载的码包进行解压 (2)进入解压目录执行 configure 命令做相关设置 (3)执行 make 进行编译 (4) ...
- ifconfig|grep eth0|awk '{print $5}' 命令详解
因需要将linx下获取某个网中的MAC地址,可以使用如下命令获取: ifconfig|grep eth0|awk '{print $5}' ifconfig: 输出linux下所有网口的信息(包括IP ...
- 《Web Development with Go》实现一个简单的rest api
设计模式完了之后,应该实现具体的应用了. 设计模式还得没事就要复习. web应用,学习的是网上的一本书. <Web Development with Go> package main im ...
- 小型数据库性能对比(对比了SQLite、FireBird、FastDB、SQLServer2000绿色版、Access、BDB、PostgreSQL)
一.全面对比 SQLite.FireBird.FastDB.SQLServer2000绿色版.Access.BDB.PostgreSQL对比结果如下: 二.国产数据库 三.SQLite 与Postgr ...
- acwing 167. 木棒
乔治拿来一组等长的木棒,将它们随机地砍断,使得每一节木棍的长度都不超过50个长度单位. 然后他又想把这些木棍恢复到为裁截前的状态,但忘记了初始时有多少木棒以及木棒的初始长度. 请你设计一个程序,帮助乔 ...