mirror of
https://github.com/EiffelSoftware/eiffel-org.git
synced 2026-04-05 09:39:31 +02:00
Author:halw
Date:2009-05-11T22:10:12.000000Z git-svn-id: https://svn.eiffel.com/eiffel-org/trunk@213 abb3cda0-5349-4a8f-a601-0c33ac3a8c38
This commit is contained in:
@@ -48,7 +48,7 @@ Let's now look at the other formats, starting from the left. The first button, <
|
||||
|
||||
This view is called "clickable" because, as we'll see later, every syntactical element on it is a hyperlink, which you can use for browsing.
|
||||
|
||||
After <code>Clickable</code> comes the <code>Flat</code> view button. The layout of the result is similar. The flat form of a class is the reconstructed class text including not only what's declared in the class itself but also everything that it inherits from its ancestors, direct or indirect. This applies to the flat form's features, which include ancestor features, but also to contracts: the flat form's invariant includes all clauses from ancestors' invariants, and the preconditions are expanded to take <code>require else</code> and <code>ensure then</code> clauses into consideration. (The <span> [[An Eiffel Tutorial|Eiffel Tutorial]] </span> explains these notions in detail.)
|
||||
After <code>Clickable</code> comes the <code>Flat</code> view button. The layout of the result is similar. The flat form of a class is the reconstructed class text including not only what's declared in the class itself but also everything that it inherits from its ancestors, direct or indirect. This applies to the flat form's features, which include ancestor features, but also to contracts: the flat form's invariant includes all clauses from ancestors' invariants, and the preconditions are expanded to take <code>require else</code> and <code>ensure then</code> clauses into consideration. (The <span> [[An Eiffel Tutorial (ET)|Eiffel Tutorial]] </span> explains these notions in detail.)
|
||||
|
||||
As a result, the <code>Flat</code> view shows the class text as it might have come out had inheritance (what a horrible thought even to contemplate!) <span>not</span> been available to write it.
|
||||
|
||||
|
||||
@@ -2,7 +2,10 @@
|
||||
[[Property:link_title|]]
|
||||
[[Property:weight|-9]]
|
||||
[[Property:uuid|fc1e73f4-5646-aa41-e7fe-97dc6f3ceb04]]
|
||||
{{seealso|[[Differences between standard ECMA-367 and Eiffel Software implementation|Differences between standard ECMA-367 and Eiffel Software implementation]] }}
|
||||
{{seealso|See also: [[Differences between standard ECMA-367 and Eiffel Software implementation|Differences between standard ECMA-367 and Eiffel Software implementation]] }}
|
||||
|
||||
==Added classes==
|
||||
* New basic classes have been added: <eiffel>INTEGER_8</eiffel>, <eiffel>INTEGER_16</eiffel>, <eiffel>INTEGER_64</eiffel> and <eiffel>WIDE_CHARACTER</eiffel>.{{seealso|[[Differences between standard ECMA-367 and Eiffel Software implementation|Differences between standard ECMA-367 and Eiffel Software implementation]] }}
|
||||
|
||||
==Added classes==
|
||||
* New basic classes have been added: <eiffel>INTEGER_8</eiffel>, <eiffel>INTEGER_16</eiffel>, <eiffel>INTEGER_64</eiffel> and <eiffel>WIDE_CHARACTER</eiffel>. <eiffel>INTEGER</eiffel> is now specified as having a 32 bits representation
|
||||
@@ -33,7 +36,7 @@
|
||||
|
||||
|
||||
==Added semantics==
|
||||
* [[7 Genericity and Arrays|Generic creation]]
|
||||
* [[ET: Genericity and Arrays|Generic creation]]
|
||||
* Expression creation: you can now create an object within an expression. For example, you want to create an object and pass it as an argument to a function. Whereas you had to create a local variable, create the object and pass it to the function, you now simply need to pass to the function the creation expression. Here is a small example:
|
||||
{|
|
||||
|-
|
||||
@@ -60,8 +63,8 @@ end
|
||||
|}
|
||||
This is also very useful since it can improve the power of assertions.
|
||||
* Mutually recursive constraints: one can now write class A [H, G->H] or class B [H -> C, G -> ARRAY [H]]. As a result, the declaration A [D, E] is valid only if E is a descendant of D. Similarly, the declaration B [E, ARRAY [D]] is not valid, if E is a descendant of D.
|
||||
* [[10 Other Mechanisms|Tuples]]
|
||||
* [[11 Agents|Agents]]
|
||||
* [[ET: Other Mechanisms|Tuples]]
|
||||
* [[ET: Agents|Agents]]
|
||||
* Feature access: <br/>
|
||||
<code>
|
||||
local
|
||||
|
||||
@@ -118,7 +118,7 @@
|
||||
| Yes
|
||||
| Yes
|
||||
|-
|
||||
| [[7 Genericity and Arrays|Generic creation]]
|
||||
| [[ET: Genericity and Arrays|Generic creation]]
|
||||
| <code>create {G} x.make</code>
|
||||
| No
|
||||
| Yes
|
||||
@@ -244,13 +244,13 @@
|
||||
| Yes
|
||||
| Yes
|
||||
|-
|
||||
| Manifest [[10 Other Mechanisms|tuple]]
|
||||
| Manifest [[ET: Other Mechanisms|tuple]]
|
||||
| <code>[a, b, c]</code>
|
||||
| No
|
||||
| Yes
|
||||
| Yes
|
||||
|-
|
||||
| [[11 Agents|Agent]]
|
||||
| [[ET: Agents|Agent]]
|
||||
| <code>list.do_all (agent print (?))</code>
|
||||
| No
|
||||
| Yes
|
||||
|
||||
Reference in New Issue
Block a user