aboutsummaryrefslogtreecommitdiff
path: root/spec/inputs/unicode/destructure.yue
blob: 3c3a36913f9eb9181e21c893e1fdb2cafd785515 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228

do
	{元素a, 元素b} = 你好

	{{元素a}, 元素b, {元素c}} = 你好

	{ :你好, :世界 } = 值

do
	{ 是: 否, 东西 } = 世界

	{:字段a,:字段b,:字段c,:d字段} = 好

	{a元素}, 变量b = 一, 二
	{b元素}, 变量c = 一, nil
	{d元素}, 变量e = 一, 二

	变量x, {元素y} = 一, 二

	变量xx, 变量yy = 1, 2
	{元素yy, 元素xx} = {变量xx, 变量yy}

	{元素a, :字段b, 元素c, :字段d, 元素e, :字段f, 元素g} = 表

	do :字段a, :字段b, 变量c = 表, nil

	do 变量a, :字段b, :字段c = 表, _无效变量

	do :字段a, 变量b, :字段c = 表, _无效变量, _无效变量

--- 

do
	未来人们 =
		雕刻家: "翁贝托·博乔尼"
		画家:	"弗拉基米尔·伯留克"
		诗人:
			姓名:	 "F.T.马里内蒂"
			地址: {
				"罗马42R大街"
				"贝拉焦,意大利 22021"
			}

	do {诗人: {:姓名, 地址: {街道, 城市}}} = 未来人们

	do {
		:雕刻家
		:画家
		诗人:
			:姓名
			地址:
				* 街道
				* 城市
	} = 未来人们

do
	字段a:
		字段b: 变量c
		字段d: 变量e = 对象tb

do
	字段a:
		* 字段b: 变量c
		* 字段d: 变量e
		* 元素f = 对象tb

--

do
	{ @世界 } = 变量x
	{ 对象a.字段b, 对象c.字段y, 函数!.字段z } = 变量x

	{ 世界: @世界 } = 变量x

--

do
	东西 = {{1,2}, {3,4}}

	for {元素x,元素y} in *东西
		打印 元素x,元素y


--

do
	with {元素a,元素b} = 东西
		打印 元素a, 元素b


--

do
	东西 = nil
	if {元素a} := 东西
		打印 元素a
	else
		打印 "没东西"

	东东 = {1,2}
	if {元素a,元素b} := 东东
		打印 元素a,元素b

	if {元素a,元素b} := 东西
		打印 元素a,元素b
	elseif {元素c,元素d} := 东东
		打印 元素c,元素d
	else
		打印 "不"

--

do
	变量z = "好"
	{元素a,元素b,元素c} = 变量z

do
	{元素a,元素b,元素c} = 变量z

_ = (参数z) ->
	{元素a,元素b,元素c} = 参数z

do
	变量z = "〇〇"
	_ = (参数k) ->
		{元素a,元素b,元素c} = 参数z

do
	{函数:{结束:结束变量}} = 东西

do
	{如果:{元素a,元素b,元素c}} = 东西

do
	{:字段a, :字段b} = {字段a: "你好", 字段b: "世界"} if true

	{天, 小时, 分钟, 秒} = [tonumber 元素 for 元素 in *{
		string.match "1 2 3 4", "(.+)%s(.+)%s(.+)%s(.+)"
	}]

	{:一, :二, :三} = {匹配结果, true for 匹配结果 in 随机对象\全局匹配("%S+")}

	{:字段a},变量b = 对象a\如果(123) + 变量t, 123

do
	{:名称 = "没名字", :工作 = "没工作"} = 个人
	
	请求 = (地址, 选项 = {}) ->
		{
			:方式 = "GET"
			:请求头 = {}
			:参数 = {}
			:负载 = ""
			:确认
			:错误
			:最终处理
		} = 选项
		结果 = 发起请求(地址, 方式, 参数, 负载, 确认, 错误, 最终处理)
		return 结果

	{键1: {键2: 值1 = 123}, :键3 = "abc"} = 对象tb

	{<>: 元表 = {__index: {字段abc: 123}}, <>: {:<call> = (-> {}), :<add>}} = 对象tb

	{字段x: {<>: 元表x = {}}, :y字段, z字段: z变量, :<index> = -> nil} = 对象tb

	{<>: {函数: a对象.b字段(-> 123).字段c = 项目?.默认值}} = 对象tb

do
	{<>: 元表 = {}, <sub>: 减函数} = 对象tb.字段x

do
	{x字段: {<>: 元表 = {}, <sub>: 减函数}} = 对象tb

do
	{元素a = 1, 元素b = 2, 字段c: {对像d.字段e = 3}} = 对象tb

	for {左 = "null", 右 = false} in *元组列表
		打印 左, 右

do
	{_, a元素, _, b元素} = 对象tb -- list placeholder

do
	{字段x: 对象a.字段b = 1, y字段: a对象.c字段 = 2} = 对象x.字段x.字段x

do
	const :宽, :高 = 视区.尺寸
	const {:x坐标 = 0.0, :y坐标 = 0.0} = 点

do
	变量1, 变量2, 变量3, 数组a[], 变量d, {元素b}, 变量e, 对象c.<> = 1, 2, 3, 函数!
	变量y1, :字段y2, :字段y3, 变量y4 = 函数1!, 函数2!

do
	{
		[["abc"]]: 变量v1 = 111,
		[1 + 1]: {变量v2 = 222, 变量v3 = 333},
		@x: 变量v4 = 444
	}, \
	'x-y-z': 变量v5, [函数!]: {[函数2!]: 变量v6, 变量v7} = 对象tb, 对象tb2

do
	<[名称]>: 元值, [名称]: 值 = 对象tb

do
	{:<tostring> = (-> "名称"), :<add>} = 对象tb

	switch 对象tb
		when {:<name> = "项目", <"123">: 元字段}
			打印 name, 元字段

do
	对象tb = {}
	<[变量a + 变量b]>: 变量v1, [函数c!]: 变量v2 = 对象tb

do
	{a: {:<add> = 加函数}, b: {<[字段名]>: 字段 = 123}} = 对象tb
	{<"字段abc">: 元字段 = "默认值", <[[任意 字符串]]>: 变量abc = 123, <'字符串'>: 有默认值 = {}} = 对象tb

	switch 对象tb
		when {字段a: {:<add> = 加函数}, b: {<[字段名]>: 字段 = 123}}
			打印 add, 字段
	switch tb
		when {字段c: {<"字段abc">: 元字段 = "默认值"}, <[[any string]]>: {字段d: 变量abc = 123}, <'字符串'>: {字段e: 有默认值 = {}}}
			打印 元字段, 变量abc, 有默认值
nil