forked from mit-cml/appinventor-sources
/
lists.html
421 lines (349 loc) · 19.2 KB
/
lists.html
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
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
<!DOCTYPE html>
<html lang="en"><head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<link rel="stylesheet" href="/static/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
<link rel="stylesheet" href="/static/css/all.css" integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay" crossorigin="anonymous">
<link href="/static/css/fonts.css" rel="stylesheet">
<link rel="stylesheet" type="text/css" href="/static/css/mit_app_inventor.css">
<script type="text/javascript">
<!--//--><![CDATA[// ><!--
var gotoappinventor = function() {
var referrer = document.location.pathname;
var patt = /.*hour-of-code.*/;
if (referrer.match(patt)) {
window.open("http://code.appinventor.mit.edu/", "new");
} else {
window.open("http://ai2.appinventor.mit.edu/", "new");
}
}
//--><!]]>
</script>
<title>MIT App Inventor List Blocks</title></head>
<body class="mit_app_inventor"><nav class="navbar navbar-expand-xl navbar-light">
<a class="navbar-brand" href="http://appinventor.mit.edu/">
<img src="/static/images/logo2.png" alt="Logo">
</a>
<button type="button" class="btn create-btn" style="margin-right: 20px;" onclick="gotoappinventor();">Create Apps!</button>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarContent"
aria-controls="navbarContent" aria-expanded="false" aria-label="Toggle Navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarContent">
<ul class="navbar-nav" style="margin-left: auto;">
<li class="nav-item dropdown">
<a class="nav-link" href="http://appinventor.mit.edu" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
About
</a>
<div class="dropdown-menu">
<a class="dropdown-item" href="http://appinventor.mit.edu/about-us">About App Inventor</a>
<a class="dropdown-item" href="http://appinventor.mit.edu/explore/our-team">Our Team</a>
<a class="dropdown-item" href="http://appinventor.mit.edu/explore/master-trainers">Master Trainers</a>
<a class="dropdown-item" href="http://appinventor.mit.edu/explore/app-month-gallery">App of the Month</a>
<a class="dropdown-item"
href="http://appinventor.mit.edu/ai2/ReleaseNotes">Release Notes</a>
<a class="dropdown-item" href="http://appinventor.mit.edu/about/termsofservice" target="_blank">Terms of Service</a>
</div>
</li>
<li class="nav-item dropdown">
<a class="nav-link" href="http://appinventor.mit.edu" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Educators
</a>
<div class="dropdown-menu">
<a class="dropdown-item" href="http://appinventor.mit.edu/explore/teach" target="_blank">Teach</a>
<a class="dropdown-item" href="http://appinventor.mit.edu/explore/ai2/tutorials">Tutorials</a>
</div>
</li>
<li class="nav-item dropdown">
<a class="nav-link" href="http://appinventor.mit.edu/news" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
News
</a>
<div class="dropdown-menu">
<a class="dropdown-item" href="http://appinventor.mit.edu/explore/news">In the news</a>
<a class="dropdown-item" href="http://appinventor.mit.edu/explore/events">Events</a>
<a class="dropdown-item" href="http://appinventor.mit.edu/explore/stories">Stories from the field</a>
</div>
</li>
<li class="nav-item dropdown">
<a class="nav-link" href="http://appinventor.mit.edu/explore/resources" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Resources
</a>
<div class="dropdown-menu">
<a class="dropdown-item" href="http://appinventor.mit.edu/explore/get-started">Get Started</a>
<a class="dropdown-item" href="http://appinventor.mit.edu/explore/library">Documentation</a>
<a class="dropdown-item" href="https://community.appinventor.mit.edu"
target="_blank">Forums</a>
<a class="dropdown-item" href="http://appinventor.mit.edu/explore/ai2/tutorials">Tutorials</a>
<a class="dropdown-item" href="http://appinventor.mit.edu/explore/books">App Inventor Books</a>
<a class="dropdown-item"
href="https://github.com/mit-cml/appinventor-sources"
target="_blank">Open Source Information</a>
<a class="dropdown-item" href="http://appinventor.mit.edu/explore/research">Research</a>
<a class="dropdown-item" href="http://appinventor.mit.edu/explore/hour-of-code">Hour of Code</a>
<a class="dropdown-item" href="http://appinventor.mit.edu/explore/resources">Additional Resources</a>
</div>
</li>
<li class="nav-item dropdown">
<a class="nav-link" href="http://appinventor.mit.edu" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Blogs
</a>
<div class="dropdown-menu">
<a class="dropdown-item" href="http://appinventor.mit.edu/explore/blog">App Inventor Blog</a>
</div>
</li>
</ul>
<div style="display: inline-flex;margin-left:auto;margin-right:0">
<a href="https://giving.mit.edu/give/to?fundId=3832320" target="_blank">
<button type="button" class="btn donate-btn" style="margin-right: 20px;">Donate</button></a>
<script>
(function() {
var cx = '005719495929270354943:tlvxrelje-e';
var gcse = document.createElement('script');
gcse.type = 'text/javascript';
gcse.async = true;
gcse.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') +
'//www.google.com/cse/cse.js?cx=' + cx;
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(gcse, s);
})();
</script>
<gcse:searchbox-only></gcse:searchbox-only>
</div>
<!-- <form class="form-inline" action="/action_page.php">
<div class="form-group has-search">
<span class="fa fa-search form-control-feedback"></span>
<input type="text" class="form-control" placeholder="Search">
</div>
</form> -->
</div>
</nav>
<div class="default-page">
<div class="header">
<h1 class="font-weight-bold text-center offset-xl-2 col-xl-8">MIT App Inventor List Blocks</h1>
</div>
<div class="container-fluid">
<article class="documentation">
<ul>
<li><a href="#emptylist">create empty list</a></li>
<li><a href="#makealist">make a list</a></li>
<li><a href="#additems">add items to list</a></li>
<li><a href="#inlist">is in list</a></li>
<li><a href="#lengthoflist">length of list</a></li>
<li><a href="#islistempty">is list empty</a></li>
<li><a href="#pickrandomitem">pick a random item</a></li>
<li><a href="#indexinlist">index in list</a></li>
<li><a href="#selectlistitem">select list item</a></li>
<li><a href="#insert">insert list item</a></li>
<li><a href="#replace">replace list item</a></li>
<li><a href="#removeitem">remove list item</a></li>
<li><a href="#append">append to list</a></li>
<li><a href="#copy">copy list</a></li>
<li><a href="#isalist">is a list?</a></li>
<li><a href="#reverse">reverse list</a></li>
<li><a href="#listtocsvrow">list to csv row</a></li>
<li><a href="#listtocsvtable">list to csv table</a></li>
<li><a href="#listfromcsvrow">list from csv row</a></li>
<li><a href="#listfromcsvtable">list from csv table</a></li>
<li><a href="#lookupinpairs">lookup in pairs</a></li>
<li><a href="#joinwithseparator">join with separator</a></li>
</ul>
<p><em>Need additional help understanding lists? Check out <a href="../concepts/lists.html">making lists</a> on the Concepts page.</em></p>
<h3 id="emptylist">create empty list</h3>
<p><img src="images/lists/emptylist.png" alt="" /></p>
<p>Creates an empty list with no elements.</p>
<h3 id="makealist">make a list</h3>
<p><img src="images/lists/makealist.png" alt="" /></p>
<p>Creates a list from the given blocks. If you don’t supply any arguments, this creates an empty list, which you can add elements to later.
This block is a <a href="../concepts/mutators.html">mutator</a>. Clicking the blue plus sign will allow you to add additional items to your list.</p>
<h3 id="additems">add items to list</h3>
<p><img src="images/lists/additems.png" alt="" /></p>
<p>Adds the given items to the end of the list.
The difference between this and append to list is that append to list takes the items to be appended as a single list
while add items to list takes the items as individual arguments. This block is a <a href="../concepts/mutators.html">mutator</a>.</p>
<h3 id="inlist">is in list</h3>
<p><img src="images/lists/inlist.png" alt="" /></p>
<p>If thing is one of the elements of the list, returns true; otherwise, returns false. Note that if a list contains sublists,
the members of the sublists are not themselves members of the list. For example, the members of the list (1 2 (3 4)) are 1, 2, and the list (3 4); 3 and 4 are not themselves members of the list.</p>
<h3 id="lengthoflist">length of list</h3>
<p><img src="images/lists/lengthoflist.png" alt="" /></p>
<p>Returns the number of items in the list.</p>
<h3 id="islistempty">is list empty</h3>
<p><img src="images/lists/islistempty.png" alt="" /></p>
<p>If list has no items, returns true; otherwise, returns false.</p>
<h3 id="pickrandomitem">pick a random item</h3>
<p><img src="images/lists/pickrandomitem.png" alt="" /></p>
<p>Picks an item at random from the list.</p>
<h3 id="indexinlist">index in list</h3>
<p><img src="images/lists/indexinlist.png" alt="" /></p>
<p>Returns the position of the thing in the list. If not in the list, returns 0.</p>
<h3 id="selectlistitem">select list item</h3>
<p><img src="images/lists/selectlistitem.png" alt="" /></p>
<p>Selects the item at the given index in the given list. The first list item is at index 1.</p>
<h3 id="insert">insert list item</h3>
<p><img src="images/lists/insert.png" alt="" /></p>
<p>Inserts an item into the list at the given position.</p>
<h3 id="replace">replace list item</h3>
<p><img src="images/lists/replace.png" alt="" /></p>
<p>Inserts <em>replacement</em> into the given list at position index. The previous item at that position is removed.</p>
<h3 id="removeitem">remove list item</h3>
<p><img src="images/lists/removeitem.png" alt="" /></p>
<p>Removes the item at the given position.</p>
<h3 id="append">append to list</h3>
<p><img src="images/lists/append.png" alt="" /></p>
<p>Adds the items in the second list to the end of the first list.</p>
<h3 id="copy">copy list</h3>
<p><img src="images/lists/copy.png" alt="" /></p>
<p>Makes a copy of a list, including copying all sublists.</p>
<h3 id="isalist">is a list?</h3>
<p><img src="images/lists/isalist.png" alt="" /></p>
<p>If <em>thing</em> is a list, returns true; otherwise, returns false.</p>
<h3 id="reverse">reverse list</h3>
<p><img src="images/lists/reverse.png" alt="" /></p>
<p>Reverses a copy of the list with items in the reverse order. For example reverse([1,2,3]) returns [3,2,1]</p>
<h3 id="listtocsvrow">list to csv row</h3>
<p><img src="images/lists/listtocsvrow.png" alt="" /></p>
<p>Interprets the list as a row of a table and returns a CSV (comma-separated value) text representing the row.
Each item in the row list is considered to be a field, and is quoted with double-quotes in the resulting CSV text. Items are separated by commas.
For example, converting the list (a b c d) to a CSV row produces (“a”, “b”, “c”, “d”).
The returned row text does not have a line separator at the end.</p>
<h3 id="listtocsvtable">list to csv table</h3>
<p><img src="images/lists/listtocsvtable.png" alt="" /></p>
<p>Interprets the list as a table in row-major format and returns a CSV (comma-separated value) text representing the table.
Each item in the list should itself be a list representing a row of the CSV table.
Each item in the row list is considered to be a field, and is quoted with double-quotes in the resulting CSV text.
In the returned text, items in rows are separated by commas and rows are separated by CRLF (\r\n).</p>
<h3 id="listfromcsvrow">list from csv row</h3>
<p><img src="images/lists/listfromcsvrow.png" alt="" /></p>
<p>Parses a text as a CSV (comma-separated value) formatted row to produce a list of fields.
For example, converting (“a”, “b”, “c”, “d”) to a list produces (a b c d).</p>
<h3 id="listfromcsvtable">list from csv table</h3>
<p><img src="images/lists/listfromcsvtable.png" alt="" /></p>
<p>Parses a text as a CSV (comma-separated value) formatted table to produce a list of rows, each of which is a list of fields.
Rows can be separated by newlines (\n) or CRLF (\r\n).</p>
<h3 id="lookupinpairs">lookup in pairs</h3>
<p><img src="images/lists/lookupinpairs.png" alt="" /></p>
<p>Used for looking up information in a dictionary-like structure represented as a list.
This operation takes three inputs, a <em>key</em>, a list <em>pairs</em>, and a <em>notFound</em> result, which by default, is set to “not found”.
Here <em>pairs</em> must be a list of pairs, that is, a list where each element is itself a list of two elements.
<code class="list block highlighter-rouge">Lookup in pairs</code> finds the first pair in the list whose first element is the <em>key</em>, and returns the second
element. For example, if the list is ((a apple) (d dragon) (b boxcar) (cat 100)) then looking up ‘b’ will return ‘boxcar’.
If there is no such pair in the list, then the <code class="list block highlighter-rouge">lookup in pairs</code> will return the <em>notFound</em> parameter. If <em>pairs</em> is not a list of
pairs, then the operation will signal an error.</p>
<h3 id="joinwithseparator">join with separator</h3>
<p><img src="images/lists/joinwithseparator.png" alt="" /></p>
<p>Joins all elements in the specified list by the specified separator, producing text as a result.</p>
</article>
<script>
// Handle redirection to documentation based on locale query parameter (if specified)
(function() {
var locale = window.location.search.match('[&?]locale=([a-zA-Z-]*)');
if (locale) {
if (locale[1].indexOf('en') === 0) {
// English needs to stay at the top level to not break existing links
var page = window.location.pathname.split('/');
if (page.length === 5) {
page.splice(2, 1);
} else {
// already on english
return;
}
window.location.href = page.join('/');
} else {
var page = window.location.pathname.split('/');
if (page.length === 4) {
page.splice(2, 0, locale[1]);
} else if (page[2].toLowerCase() != locale[1].toLowerCase()) {
page[2] = locale[1];
} else {
return; // already on the desired language
}
// Test that the page exists before redirecting.
var xhr = new XMLHttpRequest();
xhr.open('HEAD', page.join('/'), false);
xhr.onreadystatechange = function() {
if (xhr.readyState == 4) {
if ((xhr.status == 200 || xhr.status == 204)) {
window.location.href = page.join('/');
} else if (xhr.status >= 400) {
page.splice(2, 1); // go to english version
window.location.href = page.join('/');
}
}
};
xhr.send();
}
}
})();
// Handle embedded documentation in help by removing website template
if (window.self !== window.top) {
setTimeout(function() {
var videos = document.querySelectorAll('video');
for (var i = 0; i < videos.length; i++) {
if (parseInt(videos[i].getAttribute('width')) > 360) {
var aspect = parseInt(videos[i].getAttribute('height')) / parseInt(videos[i].getAttribute('width'));
videos[i].setAttribute('width', '360');
videos[i].setAttribute('height', '' + (360 * aspect));
}
}
var h1 = document.querySelector('h1');
var article = document.querySelector('article');
article.insertBefore(h1, article.firstElementChild);
document.body.innerHTML = article.outerHTML;
});
}
</script>
</div>
<div class="footer background-green">
<div class="row container">
<div class="col-xl-3">
<h3>MIT App Inventor</h3>
<!-- <form class="form-inline" action="/action_page.php">
<div class="form-group has-search">
<span class="fa fa-search form-control-feedback"></span>
<input type="text" class="form-control" placeholder="Search">
</div>
</form> -->
</div>
<div class="col-xl-6 legal text-center">
<ul>
<li>
<a href="http://web.mit.edu" class="btn btn-link" role="button"
target="_blank">© 2012-2023 Massachusetts Institute of Technology</a>
</li>
<li>
<a href="http://creativecommons.org/licenses/by-sa/3.0/"
target="_blank" class="btn btn-link" role="button">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0</a>
</li>
<li>
<a href="http://appinventor.mit.edu/about/termsofservice"
target="_blank" class="btn btn-link" role="button">Terms of Service and Privacy Policy</a>
</li>
</ul>
</div>
<div class="col-xl-3 links">
<a href="https://community.appinventor.mit.edu" target="_blank">Support / Help</a><br>
<a href="mailto:appinventor@mit.edu">Other Inquiries</a>
<div>
<span>Twitter:</span>
<a href="https://twitter.com/mitappinventor"
target="_blank" class="btn btn-link" role="button">@MITAppInventor</a>
<div>
<div>
<span>GitHub:</span>
<a href="https://github.com/mit-cml" class="btn btn-link" role="button"
target="_blank">mit-cml</a>
<div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<script src="/static/js/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<script src="/static/js/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
<script src="/static/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
<script async src="/static/js/widgets.js" charset="utf-8"></script>
</div>
</body>
</html>