A parameter declared with an Optional
modifier is an optional parameter. All arguments that textually follow an optional parameter in the formal parameter list must be optional as well. An optional parameter must specify a constant expression to be used as a replacement value if no argument is specified. This is the only situation in which an initializer on a parameter is legal. The initialization is always done as a part of the invocation expression, not within the method body itself.