Structs
Iodine extends the Java language with the ability to declare Structs. Like in C#, Swift, Go and Mercury, and Records in Oxygene, Structs are comparable to Classes in that they represent a data structure that combines Fields and Methods. Unlike Classes, Structs are stack-based value types, and while they do support inheritance, they do not offer polymorphism.
A struct is declared very similar to a class, except by replacing the class keyword with __struct:
MyStruct = public _struct {
public int count;
public void DoSomething() {
..
}
}
Structs may provide an ancestor via extends, but they may not declare virtual or overriden members.
Except when using the Toffee compiler back-end for Cocoa, they may also implement interfaces using the same implements syntax as used for classes.
MyStruct2 = public _struct extends MyStruct implements IFoo {
public string name;
public void DoSomethingElse() {
..
}
..
}
In the example above, MyStruct2 contains all the fields and methods of MyStruct, as well as those defined for MyStruct2 itself.