Skip to main content
Version: Next

Advanced Operators

In addition to basic operators introduced in Basics Chapter, Drift implements advanced, like Bitwise, Overflow and custom ones.

Bitwise Operators​

Bitwise NOT Operator​

warning

At this moment, Drift does not implement bitwise NOT operator.

~0b0011     // equals 0b1100

Bitwise AND Operator​

warning

At this moment, Drift does not implement bitwise AND operator.

0b0011 & 0b0110     // equals 0b0010

Bitwise OR Operator​

warning

At this moment, Drift does not implement bitwise OR operator.

0b0011 | 0b0110     // equals 0b0111

Bitwise XOR Operator​

warning

At this moment, Drift does not implement bitwise XOR operator.

0b0011 ^ 0b0110     // equals 0b0101

Bitwise Left and Right Shift Operators​

warning

At this moment, Drift does not implement bitwise left and right shift operators.

0b0011 << 1     // equals 0b0110
0b0011 << 2 // equals 0b1100

0b0011 >> 1 // equals 0b0001
0b0011 >> 2 // equals 0b0000

Overflow Operator​

The default numeric overflow behavior is to throw an exception (Too long). This can be avoided by using the Overflow Operator as a prefix of the used operator.

warning

At this moment, Drift does not implement the overflow operator.

Int Context:        [INT MAX] + 1       // Will throw (too long)
Int Context: [INT MAX] &+ 1 // Equals 0

Operator Method​

warning

At this moment, Drift does not implement operator methods.

class User(name: String) : +Equatable, +Incrementable {
operator == { $left.name == $right.name }
// Last expression as return type is possible

operator != (l: User, r: User) {
return l.name != r.name
}
// Explicit parameters are possible

prefix operator ++ { ... }
// Prefix operator: ++obj

postfix operator -- { ... }
// Postfix operator: obj--
}

Operator methods require the implementation of their prefab.