How do I declare multiple parameters on a function in EK9?
← Syntax and Structure Rules · Ref: Q916
EK9 uses ONE -> arrow followed by indented parameters below it. Parameters are NOT comma-separated on one line.
CORRECT SYNTAX
One -> arrow, then each parameter on its own indented line:
greet()
->
name as String
age as Integer
<- rtn as String: `${name} is ${$age}`
SINGLE PARAMETER SHORTHAND
For a single parameter, you can put it on the same line as ->:
greet()
-> name as String
<- rtn as String: `Hello ${name}`
WHAT NOT TO DO
- Do NOT use commas between parameters
- Do NOT put multiple parameters on one line
- Do NOT use multiple -> arrows
- Do NOT use parentheses around parameters
WRONG PATTERNS (do not compile)
greet(name as String, age as Integer) WRONG: not C-style greet() -> name as String, age as Integer WRONG: no commas greet() -> name as String -> age as Integer WRONG: only one ->
CONSTRUCTOR PARAMETERS
Constructors follow the same rule:
MyClass()
->
name as String
score as Integer
this.name :=: name
this.score :=: score
See Q894 for constructor parameter syntax. See Q893 for section headers. See Q907 for EK9 structure overview.
Example
defines module qa.syntaxrules.arrowparams defines function // Single parameter — shorthand on same line as -> greetSimple() as pure -> name as String <- rtn as String: `Hello ${name}` // Multiple parameters — -> then indented below greetPerson() as pure -> name as String age as Integer <- rtn as String: `${name} is ${age}` // Three parameters formatEntry() as pure -> key as String setting as String index as Integer <- rtn as String: `${index}: ${key}=${setting}` defines program ParamArrowDemo() stdout <- Stdout() // === Single parameter === stdout.println(greetSimple("Steve")) // === Multiple parameters === stdout.println(greetPerson("Alice", 30)) // === Three parameters === stdout.println(formatEntry("userName", "Bob", 1)) stdout.println(formatEntry("userRole", "dev", 2))
Common mistakes
E01082 — EK9 does not allow multiple -> arrows. Use ONE -> arrow then indent each parameter on its own line below. Multiple -> arrows trigger E01082. See ek9 -h E01082 for details.
Incorrect:
greetPerson() as pure -> name as String -> age as Integer
Correct:
greetPerson() as pure -> name as String age as Integer
Other ways to ask this
- Can I put all parameters on one line in EK9?
- What does the -> arrow mean for parameters in EK9?
- How do I use the parameter arrow in EK9?
Coming from another language?
Java: method(String name, int age) comma-separated in parentheses. Python: def method(name, age) comma-separated. Rust: fn method(name: String, age: i32) comma-separated. Go: func method(name string, age int) comma-separated. EK9: ONE -> arrow then indented parameters, each on its own line.
Keywords: function, declaration, indent, syntax, multiple, arrow, parameter