Skip to content

Compact method syntax #241

@thekid

Description

@thekid

Scope of Change

A compact syntax for simple methods will be introduced

Rationale

Slightly less return $this.member; typing - especially in value objects.

Functionality

The -> expression; notation is used as a shorthand for { return expression; }.

public class Person {
  protected string $name;

  public string getName() -> $this.name;
}

// Equivalent of
public class Person {
  protected string $name;

  public string getName() {
    return $this.name;
  }
}

Combined with the compact assignment syntax described in RFC #240 and the fluent interface shorthand in RFC #252 we can now write value object as follows:

public class Person {
  protected string $name;

  public __construct($this.name= null) { }
  public void setName($this.name) { }
  public this withName($this.name) { }
  public string getName() -> $this.name;
}

Security considerations

n/a

Speed impact

None, resolved during compile time.

Dependencies

n/a

Related documents

  • Dart's "=> e; shorthand"
  • RFC Compact assignment syntax #240 - Compact assignment syntax
  • XP Language's anonymous functions use this (slightly different, e.g. in return #{ $a -> $a + 1 }.(2); // 3 it separates the arguments from the body, but this still has chances for recognition).

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions