此文档页面特定于 Scala 2 中提供的功能,这些功能已在 Scala 3 中移除或被替代方案取代。除非另有说明,本页面中的所有代码示例均假设你使用的是 Scala 2。
Denys Shabalin 实验性
表达式
|
准引号 |
类型 |
空 |
q"" |
EmptyTree |
文本 |
q"$value" |
文本 |
标识符 |
q"$tname" 或 q"name" |
Ident |
选择 |
q"$expr.$tname" |
Select |
超级选择 |
q"$tpname.super[$tpname].$tname" |
Select |
This |
q"$tpname.this" |
This |
应用程序 |
q"$expr(...$exprss)" |
Apply |
类型应用程序 |
q"$expr[..$tpts]" |
TypeApply |
分配 |
q"$expr = $expr" |
赋值,赋值或命名参数 |
更新 |
q"$expr(..$exprs) = $expr" |
树 |
返回 |
q"return $expr" |
返回 |
抛出 |
q"throw $expr" |
抛出 |
归属 |
q"$expr: $tpt" |
类型化 |
带注释 |
q"$expr: @$annot" |
带注释 |
元组 |
q"(..$exprs)" |
树 |
块 |
q"{ ..$stats }" |
块 |
如果 |
q"if ($expr) $expr else $expr" |
如果 |
模式匹配 |
q"$expr match { case ..$cases }" |
匹配 |
尝试 |
q"try $expr catch { case ..$cases } finally $expr" |
尝试 |
函数 |
q"(..$params) => $expr" |
函数 |
部分函数 |
q"{ case ..$cases }" |
匹配 |
While 循环 |
q"while ($expr) $expr" |
LabelDef |
Do-While 循环 |
q"do $expr while ($expr)" |
LabelDef |
For 循环 |
q"for (..$enums) $expr" |
树 |
For-Yield 循环 |
q"for (..$enums) yield $expr" |
树 |
新建 |
q"new { ..$earlydefns } with ..$parents { $self => ..$stats }" |
树 |
XML 字面量 |
本机不支持 |
树 |
类型
|
准引号 |
类型 |
空类型 |
tq"" |
类型树 |
类型标识符 |
tq"$tpname" 或 tq"Name" |
Ident |
单例类型 |
tq"$ref.type" |
单例类型树 |
类型投影 |
tq"$tpt#$tpname" |
从类型树中选择 |
类型选择 |
tq"$ref.$tpname" |
Select |
超类型选择 |
tq"$tpname.super[$tpname].$tpname" |
Select |
此类型选择 |
tq"this.$tpname" |
Select |
应用类型 |
tq"$tpt[..$tpts]" |
应用类型树 |
带注释类型 |
tq"$tpt @$annots" |
带注释 |
复合类型 |
tq"..$parents { ..$defns }" |
复合类型树 |
存在类型 |
tq"$tpt forSome { ..$defns }" |
存在类型树 |
元组类型 |
tq"(..$tpts)" |
树 |
函数类型 |
tq"(..$tpts) => $tpt" |
树 |
模式
|
准引号 |
类型 |
通配符模式 |
pq"_" |
Ident |
字面量模式 |
pq"$value" |
文本 |
绑定模式 |
pq"$name @ $pat" |
绑定 |
提取器模式 |
pq"$ref(..$pats)" |
应用,取消应用 |
类型模式 |
pq"_: $tpt" |
类型化 |
备选模式 |
pq"$first │ ..$rest" |
备选 |
元组模式 |
pq"(..$pats)" |
应用,取消应用 |
XML 模式 |
本机不支持 |
树 |
定义
|
准引号 |
类型 |
Val |
q"$mods val $tname: $tpt = $expr" 或 q"$mods val $pat = $expr" |
ValDef |
Var |
q"$mods var $tname: $tpt = $expr" 或 q"$mods var $pat = $expr" |
ValDef |
Val 模式 |
q"$mods val $pat: $tpt = $expr" |
树 |
Var 模式 |
q"$mods var $pat: $tpt = $expr" |
树 |
方法 |
q"$mods def $tname[..$tparams](...$paramss): $tpt = $expr" |
DefDef |
辅助构造函数 |
q"$mods def this(...$paramss) = this(..$argss)" |
DefDef |
类型 |
q"$mods type $tpname[..$tparams] = $tpt" |
TypeDef |
类 |
q"$mods class $tpname[..$tparams] $ctorMods(...$paramss) extends { ..$earlydefns } with ..$parents { $self => ..$stats }" |
ClassDef |
特征 |
q"$mods trait $tpname[..$tparams] extends { ..$earlydefns } with ..$parents { $self => ..$stats }" |
TraitDef |
对象 |
q"$mods object $tname extends { ..$earlydefns } with ..$parents { $self => ..$body }" |
ModuleDef |
包 |
q"package $ref { ..$topstats }" |
PackageDef |
包对象 |
q"package object $tname extends { ..$earlydefns } with ..$parents { $self => ..$stats }" |
PackageDef |
辅助
|
准引号 |
类型 |
导入 |
q"import $ref.{..$sels}" |
导入 |
案例子句 |
cq"$pat if $expr => $expr" |
CaseDef |
生成器枚举器 |
fq"$pat <- $expr" |
树 |
值定义枚举器 |
fq"$pat = $expr" |
树 |
保护枚举器 |
fq"if $expr" |
树 |
缩写
未引用前缀表示以下内容
name: Name
, tname: TermName
, tpname: TypeName
value: T
其中 T
是与给定文字对应的值类型(例如 Int
、Char
、Float
等)
expr: Tree
表达式树
tpt: Tree
类型树
pat: Tree
模式树
defn: Tree
定义树
earlydefn: Tree
早期定义树(val 或 类型定义)
self: Tree
自我定义树(即 val 定义)
stat: Tree
语句树(定义、表达式 或 导入)
topstat: Tree
顶级语句树(类、特征、包、包对象 或 导入)
enum: Tree
for 循环 枚举器
param: Tree
值参数树(即 val 定义)
tparam: Tree
类型参数树(即 类型定义)
parent: Tree
模板 父级
sel: Tree
导入 选择器树
每当名称有后缀 s
时,表示它是某个内容的 List
。 ss
表示 List of Lists。因此,例如 exprss
表示 List
of List
s of expressions。