at:tutorial:appendix
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
at:tutorial:appendix [2010/05/26 19:39] – *fixed tvcutsem | at:tutorial:appendix [2024/10/03 22:19] (current) – fixing path to exceptions module elisag | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== Appendix: Libraries ====== | ====== Appendix: Libraries ====== | ||
- | In the appendix, we explain useful libraries available to the AmbientTalk/ | + | In the appendix, we explain useful libraries available to the AmbientTalk/ |
+ | |||
+ | The Ambientalk standard library ('' | ||
===== Unit Testing Framework ===== | ===== Unit Testing Framework ===== | ||
Line 351: | Line 353: | ||
===== Custom Exceptions ===== | ===== Custom Exceptions ===== | ||
- | The module ''/ | + | The module ''/ |
< | < | ||
Line 390: | Line 392: | ||
===== Language Extensions ===== | ===== Language Extensions ===== | ||
- | The files in the '' | + | The files in the '' |
- | ==== Futures and Multifutures ==== | ||
- | === Futures === | + | |
+ | |||
+ | =====Futures | ||
+ | |||
+ | ==== Futures ==== | ||
The module ''/ | The module ''/ | ||
Line 417: | Line 422: | ||
</ | </ | ||
- | Finally, the futures module also provides some auxiliary functions, of which '' | + | The '' |
+ | |||
+ | === Auxilary functions in the futures module ==== | ||
+ | |||
+ | The futures module also provides some auxiliary functions, of which '' | ||
< | < | ||
- | when: (group: [ a<-m(), b<-n() ]) becomes: { |values| | + | when: (group: [ a<-m()@FutureMessage, b<-n()@FutureMessage |
def [aResult, bResult] := values; | def [aResult, bResult] := values; | ||
... | ... | ||
Line 426: | Line 435: | ||
</ | </ | ||
- | === Multifutures === | + | Another useful auxilary function is '' |
+ | |||
+ | < | ||
+ | future: { |return| | ||
+ | // some computation | ||
+ | return(val) | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | This is actually equivalent to the slightly more verbose code: | ||
+ | |||
+ | < | ||
+ | def [fut,res] := makeFuture(); | ||
+ | try: { // some computation | ||
+ | res.resolve(val); | ||
+ | } catch: Exception using: { |e| res.ruin(e) } | ||
+ | fut; | ||
+ | </ | ||
+ | |||
+ | ==== Multifutures | ||
The module ''/ | The module ''/ | ||
Line 467: | Line 495: | ||
When the message sent to a multireference is annotated with @Due(t), the timeout is applied to the implicit multifuture, | When the message sent to a multireference is annotated with @Due(t), the timeout is applied to the implicit multifuture, | ||
- | ==== Leased Object References ==== | + | |
+ | ===== Leased Object References | ||
The module ''/ | The module ''/ | ||
Line 497: | Line 526: | ||
+ | ===== TOTAM ===== | ||
- | ==== Dynamic Variables ==== | + | The module ''/ |
+ | |||
+ | Please have a look to [[: | ||
+ | |||
+ | ===== Dynamic Variables | ||
The module ''/ | The module ''/ | ||
Line 525: | Line 559: | ||
You can find more usage examples of dynamic variables in the unit test included in the file '' | You can find more usage examples of dynamic variables in the unit test included in the file '' | ||
- | ==== Ambient References ==== | + | ===== Ambient References |
Ambient references are defined in the module ''/ | Ambient references are defined in the module ''/ | ||
Line 539: | Line 573: | ||
Ambient references ship with two so-called " | Ambient references ship with two so-called " | ||
- | ==== Structural Types ==== | + | ===== Structural Types ===== |
The module ''/ | The module ''/ | ||
Line 576: | Line 610: | ||
More usage examples of structural types can be found in the unit test defined in the file '' | More usage examples of structural types can be found in the unit test defined in the file '' | ||
- | ==== Traits ==== | + | ===== Traits |
The module ''/ | The module ''/ | ||
Line 609: | Line 643: | ||
The files in the '' | The files in the '' | ||
+ | |||
==== Timing Utilities ==== | ==== Timing Utilities ==== | ||
Line 632: | Line 667: | ||
The timer module also defines a function '' | The timer module also defines a function '' | ||
- | The timer module defines | + | Finally, there is a variant |
+ | |||
+ | < | ||
+ | def testAsyncNearbyPlayerReply(){ | ||
+ | def nearbyPlayers := // search 2 nearby player orjbects; | ||
+ | // wait a bit so that there are the 2 members. | ||
+ | when: 2.seconds elapsedWithFuture: | ||
+ | self.assertEquals(2, | ||
+ | } | ||
+ | }; | ||
+ | </ | ||
==== Logging Framework ==== | ==== Logging Framework ==== |
at/tutorial/appendix.1274895550.txt.gz · Last modified: 2020/02/05 20:57 (external edit)