Integer
From Erights
Kevin Reid (Talk | contribs) |
(mention guard, etc) |
||
Line 1: | Line 1: | ||
- | [[Integer]] is one of the built-in numeric types in [[ELib]]. | + | [[Integer]] is one of the built-in numeric types in [[ELib]]. Integers may be literals in [[E language]] source. |
+ | |||
+ | In the [[universal environment]], the Integer guard is named <code>int</code>. | ||
==Maker protocol== | ==Maker protocol== | ||
Line 12: | Line 14: | ||
<var>string</var> must contain only an optional leading minus sign "-" (U+002D), followed by at least one digit of the specified base ("0"-"9" for bases up to 10, then "a"-"z" or "A"-"Z" for additional digits up to base 36). | <var>string</var> must contain only an optional leading minus sign "-" (U+002D), followed by at least one digit of the specified base ("0"-"9" for bases up to 10, then "a"-"z" or "A"-"Z" for additional digits up to base 36). | ||
+ | |||
+ | ==Tests== | ||
+ | |||
+ | Many E implementations have multiple representations of Integers for different size ranges. These implementations ''must'' be indistinguishable, or there must be exactly one representation for any given integer. | ||
+ | |||
+ | ? def a := 4 | ||
+ | # value: 4 | ||
+ | |||
+ | ? def b := (400000000000000000000 // 100000000000000000000) | ||
+ | # value: 4 | ||
+ | |||
+ | ? a == b | ||
+ | # value: true | ||
+ | |||
+ | ? a.__getAllegedType() | ||
+ | # value: int | ||
+ | |||
+ | ? b.__getAllegedType() | ||
+ | # value: int | ||
+ | |||
+ | ? 400000000000000000000.__getAllegedType() | ||
+ | # value: int | ||
[[Category:ELib specification]] | [[Category:ELib specification]] | ||
{{stub}} | {{stub}} |
Latest revision as of 18:25, 26 July 2011
Integer is one of the built-in numeric types in ELib. Integers may be literals in E language source.
In the universal environment, the Integer guard is named int
.
Contents |
Maker protocol
run/1
run(string :String) :Integer
Equivalent to thisInteger.run(string, 10)
.
run/2
run(string :String, base :(0..36)) :Integer
Convert string to an integer. If it does not match the following syntax then an exception is thrown. XXX If sealed throw is accepted, then there must be a way to supply an ejector to handle failure here.
string must contain only an optional leading minus sign "-" (U+002D), followed by at least one digit of the specified base ("0"-"9" for bases up to 10, then "a"-"z" or "A"-"Z" for additional digits up to base 36).
Tests
Many E implementations have multiple representations of Integers for different size ranges. These implementations must be indistinguishable, or there must be exactly one representation for any given integer.
? def a := 4 # value: 4 ? def b := (400000000000000000000 // 100000000000000000000) # value: 4 ? a == b # value: true ? a.__getAllegedType() # value: int ? b.__getAllegedType() # value: int ? 400000000000000000000.__getAllegedType() # value: int
- This page is a stub; it should be expanded with more information. If doing so, check the original E web site and the mailing list archives for content which could be moved into this page.