Integer
Integer — Whole number arithmetic and operations.
Integers in Beamtalk are arbitrary precision (Erlang integers).
Arithmetic operations return integers except / which returns
a Float. Use div: for integer (truncating) division.
BEAM Mapping
Beamtalk integers map directly to Erlang integers.
Examples
42 class // => Integer
3 + 4 // => 7
2 ** 100 // => 1267650600228229401496703205376
17 % 5 // => 2
Methods
- + other
- - other
- * other
- / other
- div: other
- % other
- ** other
- =:= other
- =/= other
- /= other
- < other
- > other
- <= other
- >= other
- negated
- abs
- isEven
- isOdd
- min: other
- max: other
- timesRepeat: block
- to: end do: block
- to: end by: step do: block
- to: stop
- to: stop by: step
- asFloat
- asString
- printString
- bitAnd: other
- bitOr: other
- bitXor: other
- bitShift: n
- bitNot
- factorial
- gcd: other
- lcm: other
- isLetter
- isDigit
- isUppercase
- isLowercase
- isWhitespace
- sqrt
- log
- ln
- log2
- log10
- exp
- raisedTo: exponent
Instance Methods
Add an integer to the receiver.
Examples
3 + 4 // => 7
-1 + 1 // => 0
Subtract an integer from the receiver.
Examples
10 - 3 // => 7
0 - 5 // => -5
Multiply the receiver by an integer.
Examples
6 * 7 // => 42
-3 * 4 // => -12
Divide the receiver by a number (float division).
Always returns a Float, even when both operands are integers.
For integer (truncating) division, use div:.
Examples
10 / 3 // => 3.3333333333333335
42 / 7 // => 6.0
Integer (truncating) division of the receiver by another integer.
Truncates toward zero. For float division, use /.
Examples
10 div: 3 // => 3
42 div: 7 // => 6
7 div: 2 // => 3
-7 div: 2 // => -3
Remainder after integer division.
Examples
17 % 5 // => 2
10 % 3 // => 1
Raise the receiver to a power.
Examples
2 ** 10 // => 1024
3 ** 3 // => 27
Test strict equality with another integer.
Examples
42 =:= 42 // => true
1 =:= 2 // => false
Test strict inequality with another integer.
Examples
1 =/= 2 // => true
42 =/= 42 // => false
Test inequality with another integer.
Examples
1 /= 2 // => true
42 /= 42 // => false
Test if the receiver is less than another integer.
Examples
1 < 2 // => true
5 < 3 // => false
Test if the receiver is greater than another integer.
Examples
5 > 3 // => true
1 > 2 // => false
Test if the receiver is less than or equal to another integer.
Examples
1 <= 2 // => true
3 <= 3 // => true
Test if the receiver is greater than or equal to another integer.
Examples
5 >= 3 // => true
3 >= 3 // => true
Negate the receiver.
Examples
5 negated // => -5
-3 negated // => 3
Absolute value of the receiver.
Examples
-42 abs // => 42
7 abs // => 7
Test if the receiver is even.
Examples
4 isEven // => true
7 isEven // => false
Test if the receiver is odd.
Examples
7 isOdd // => true
4 isOdd // => false
Return the smaller of the receiver and other.
Examples
3 min: 7 // => 3
10 min: 2 // => 2
Return the larger of the receiver and other.
Examples
3 max: 7 // => 7
10 max: 2 // => 10
Evaluate block the receiver number of times.
Examples
3 timesRepeat: [Transcript show: "hi"]
Iterate from the receiver to end, evaluating block with each value.
Examples
1 to: 3 do: [:i | Transcript show: i]
Iterate from the receiver to end by step, evaluating block with each value.
Examples
1 to: 10 by: 3 do: [:i | Transcript show: i]
Return an Interval from the receiver to stop with step 1.
Examples
1 to: 10 // => (1 to: 10)
Return an Interval from the receiver to stop with the given step.
Raises an error if step is zero.
Examples
1 to: 10 by: 2 // => (1 to: 10 by: 2)
Convert the receiver to a Float.
Examples
42 asFloat // => 42.0
Convert the receiver to its String representation.
Examples
42 asString // => "42"
Return a developer-readable string representation.
Examples
42 printString // => "42"
Bitwise AND with another integer.
Examples
12 bitAnd: 10 // => 8
Bitwise OR with another integer.
Examples
12 bitOr: 10 // => 14
Bitwise XOR with another integer.
Examples
12 bitXor: 10 // => 6
Bit shift the receiver by n positions. Positive shifts left, negative shifts right.
Examples
1 bitShift: 4 // => 16
16 bitShift: -2 // => 4
Bitwise complement of the receiver.
Examples
0 bitNot // => -1
Factorial of the receiver. Raises an error for negative integers.
Examples
5 factorial // => 120
0 factorial // => 1
Greatest common divisor of the receiver and other.
Examples
12 gcd: 8 // => 4
7 gcd: 5 // => 1
Least common multiple of the receiver and other.
Examples
4 lcm: 6 // => 12
3 lcm: 5 // => 15
Test if the codepoint is a Unicode letter.
Examples
65 isLetter // => true
48 isLetter // => false
Test if the codepoint is a Unicode digit.
Examples
48 isDigit // => true
65 isDigit // => false
Test if the codepoint is an uppercase letter.
Examples
65 isUppercase // => true
97 isUppercase // => false
Test if the codepoint is a lowercase letter.
Examples
97 isLowercase // => true
65 isLowercase // => false
Test if the codepoint is a whitespace character.
Examples
32 isWhitespace // => true
65 isWhitespace // => false
Square root of the receiver (returns Float).
Examples
16 sqrt // => 4.0
2 sqrt // => 1.4142135623730951
Natural logarithm (base e) of the receiver (returns Float).
Examples
1 log // => 0.0
Natural logarithm (base e) of the receiver. Alias for log.
Examples
1 ln // => 0.0
Base-2 logarithm of the receiver (returns Float).
Examples
8 log2 // => 3.0
Base-10 logarithm of the receiver (returns Float).
Examples
100 log10 // => 2.0
Euler's number (e) raised to the power of the receiver (returns Float).
Examples
0 exp // => 1.0
1 exp // => 2.718281828459045
Raise the receiver to the power of exponent.
Returns Integer when the exponent is a non-negative Integer, Float otherwise (negative or Float exponent).
Examples
2 raisedTo: 10 // => 1024
2 raisedTo: -1 // => 0.5
Inherited Methods
From Number
Strict equality comparison.
Strict inequality comparison.
Less than.
Greater than.
Less than or equal.
Greater than or equal.
Test if the receiver is zero.
Examples
0 isZero // => true
5 isZero // => false
Test if the receiver is positive (greater than zero).
Examples
5 isPositive // => true
-3 isPositive // => false
0 isPositive // => false
Test if the receiver is negative (less than zero).
Examples
-3 isNegative // => true
5 isNegative // => false
Return 1 for positive, -1 for negative, 0 for zero.
Examples
42 sign // => 1
-7 sign // => -1
0 sign // => 0
Test if the receiver is between min and max (inclusive).
Examples
5 between: 1 and: 10 // => true
15 between: 1 and: 10 // => false
Override inspect to use printString rather than the field-based format defined in Value. Numbers are primitives, not map-based value objects.
From Value
Return a developer-readable string representation showing fields.
Produces ClassName(field: value, ...). Field values are recursively
inspected — strings are quoted, nested objects show their own inspect.
A class with no fields produces ClassName().
Examples
ValuePoint x: 3 y: 4 inspect // => "ValuePoint(x: 3, y: 4)"
ValuePoint new inspect // => "ValuePoint(x: 0, y: 0)"
From Object
Return the class of the receiver.
Examples
42 class // => Integer
"hello" class // => String
Test if the receiver is nil. Returns false for all objects except nil.
Examples
42 isNil // => false
nil isNil // => true
Test if the receiver is not nil. Returns true for all objects except nil.
Examples
42 notNil // => true
nil notNil // => false
If the receiver is nil, evaluate nilBlock. Otherwise return self.
Examples
42 ifNil: [0] // => 42
nil ifNil: [0] // => 0
If the receiver is not nil, evaluate notNilBlock with self.
Examples
42 ifNotNil: [:v | v + 1] // => 43
nil ifNotNil: [:v | v + 1] // => nil
If nil, evaluate nilBlock; otherwise evaluate notNilBlock with self.
Examples
42 ifNil: [0] ifNotNil: [:v | v + 1] // => 43
nil ifNil: [0] ifNotNil: [:v | v + 1] // => 0
If not nil, evaluate notNilBlock with self; otherwise evaluate nilBlock.
Examples
42 ifNotNil: [:v | v + 1] ifNil: [0] // => 43
nil ifNotNil: [:v | v + 1] ifNil: [0] // => 0
Return a developer-readable string representation.
Default implementation returns "a ClassName". Subclasses such as
Integer, String, and List override this to return richer output.
Examples
42 printString // => "42"
Return a user-facing string representation for display purposes.
Default implementation delegates to printString. Subclasses such as
String and Symbol override this to return a more readable form without
developer annotations (e.g. no surrounding quotes or # prefix).
Examples
42 displayString // => "42"
Inspect the receiver.
Examples
42 inspect // => "42"
Return the receiver itself. Useful for cascading side effects.
Examples
42 yourself // => 42
Return a hash value for the receiver.
Examples
42 hash
Test if the receiver responds to the given selector.
Examples
42 respondsTo: #abs // => true
Return the names of fields.
Examples
42 fieldNames // => #()
Return the value of the named field.
Examples
object fieldAt: #name
Set the value of the named field (returns new state).
Examples
object fieldAt: #name put: "Alice"
Send a unary message dynamically.
Examples
42 perform: #abs // => 42
Send a message dynamically with arguments.
Examples
3 perform: #max: withArguments: #(5) // => 5
Raise an error indicating this method must be overridden by a subclass.
Examples
self subclassResponsibility
Raise an error indicating this method has not yet been implemented.
Use this for work-in-progress stubs. Distinct from subclassResponsibility,
which signals an interface contract violation.
Examples
self notImplemented
Send aValue to the current transcript without a trailing newline.
Nil-safe: does nothing when no transcript is set (batch compile, tests).
Examples
42 show: "value: "
Send aValue to the current transcript followed by a newline.
Nil-safe: does nothing when no transcript is set (batch compile, tests).
Examples
42 showCr: "hello world"
Test if the receiver is an instance of aClass or any of its subclasses.
Examples
42 isKindOf: Integer // => true
42 isKindOf: Object // => true
#foo isKindOf: Symbol // => true
#foo isKindOf: String // => false
Raise an error with the given message.
Examples
self error: "something went wrong"
From ProtoObject
Test value equality (Erlang ==).
Examples
42 == 42 // => true
"abc" == "abc" // => true
Test value inequality (negation of ==).
Examples
1 /= 2 // => true
42 /= 42 // => false
Return the class of the receiver.
Examples
42 class // => Integer
"hello" class // => String
Handle messages the receiver does not understand. Override for custom dispatch.
Examples
42 unknownMessage // => ERROR: does_not_understand
Send a message dynamically with an arguments list.
Examples
42 perform: #abs withArguments: #() // => 42
Execute a class method in the caller's process, bypassing gen_server dispatch.
The caller takes responsibility for knowing the method does not mutate class state. Useful for long-running class methods that would otherwise block the class object's gen_server.
Limitations: only resolves methods defined directly on the target class
module (does not walk the superclass chain). Class variables and self
are not available to the method (nil and #{} are passed).
Examples
MyClass performLocally: #run:ctx: withArguments: #(input, ctx)
Send a message dynamically with an arguments list and explicit timeout.
The timeout (in milliseconds or #infinity) applies to the gen_server:call
when the receiver is an actor. For value types, timeout is ignored.
Examples
actor perform: #query withArguments: #(sql) timeout: 30000