Instance fields can be accessed as functions, both for reading and writing. Suppose that we have a Java class that looks as follows:
public class Foo { public String bar; }
We can access the bar
field as follows:
let foo = Foo() # Write foo: bar("baz") # Read, prints "baz" println(foo: bar())
An interesting behavior when writing fields is that the "methods" return the object, which means that you can chain invocations.
Suppose that we have a Java class as follows:
public class Foo { public String bar; public String baz; }
We can set all fields by chaining invocations as in:
let foo = Foo(): bar(1): baz(2)
It should be noted that Golo won’t bypass the regular Java visibility access rules on fields.
Back to the previous example, suppose that we have both a field and a method with the same name, as in:
public class Foo { public String bar; public String bar() { return bar; } }
Golo resolves methods first, fields last. Hence, the following Golo code will resolve the
bar()
method, not the bar
field:
let foo = Foo() # Write the field foo: bar("baz") # Calls the bar() method println(foo: bar())