Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
梦境迷离
Scala Macro Tools
提交
5e37ee04
S
Scala Macro Tools
项目概览
梦境迷离
/
Scala Macro Tools
上一次同步 1 年多
通知
8
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
S
Scala Macro Tools
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
5e37ee04
编写于
6月 13, 2021
作者:
梦境迷离
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
update README.md
上级
a1bbfa98
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
30 addition
and
4 deletion
+30
-4
README.md
README.md
+30
-4
未找到文件。
README.md
浏览文件 @
5e37ee04
...
...
@@ -9,17 +9,41 @@ scala macro and abstract syntax tree learning code.
-
Contains constructor parameters which have
`val`
/
`var`
modifier and class internal fields.
-
The existing custom
`toString`
method will fail to compile.
-
source code
-
source code
1
```
scala
@toString
@toString
(
isContainsCtorParams
=
true
)
class
TestClass
(
val
i
:
Int
=
0
,
var
j
:
Int
)
{
val
y
:
Int
=
0
var
z
:
String
=
"hello"
var
x
:
String
=
"world"
}
// result of scalac
class
TestClass
extends
scala
.
AnyRef
{
<
paramaccessor
>
val
i
:
Int
=
_
;
<
paramaccessor
>
var
j
:
Int
=
_
;
def
<
init
>(
i
:
Int
=
0
,
j
:
Int
)
=
{
super
.<
init
>();
()
};
val
y
:
Int
=
0
;
var
z
:
String
=
"hello"
;
var
x
:
String
=
"world"
;
override
def
toString
()
:
String
=
scala
.
collection
.
immutable
.
List
(
i
,
j
,
y
,
z
,
x
).
toString
.
replace
(
"List"
,
"TestClass"
)
// a crude way, TODO refactor it.
}
//println(new TestClass(1, 2))
//TestClass(1, 2, 0, hello, world)
```
-
result of scalac
-
source code2
```
scala
@toString
class
TestClass
(
val
i
:
Int
=
0
,
var
j
:
Int
)
{
val
y
:
Int
=
0
var
z
:
String
=
"hello"
var
x
:
String
=
"world"
}
// result of scalac
class
TestClass
extends
scala
.
AnyRef
{
<
paramaccessor
>
val
i
:
Int
=
_
;
<
paramaccessor
>
var
j
:
Int
=
_
;
...
...
@@ -30,7 +54,9 @@ class TestClass extends scala.AnyRef {
val
y
:
Int
=
0
;
var
z
:
String
=
"hello"
;
var
x
:
String
=
"world"
;
override
def
toString
()
:
String
=
scala
.
collection
.
immutable
.
List
(
i
,
j
,
y
,
z
,
x
).
toString
.
replace
(
"List"
,
"TestClass"
)
// a crude way, TODO refactor it.
override
def
toString
()
:
String
=
scala
.
collection
.
immutable
.
List
(
y
,
z
,
x
).
toString
.
replace
(
"List"
,
"TestClass"
)
// a crude way, TODO refactor it.
}
//println(new TestClass(1, 2))
//TestClass(0, hello, world)
```
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录