Optional parameters: Difference between revisions

Content added Content deleted
(→‎{{header|Python}}: See the Python entry in Named Arguments for a more comprehensive description of Python function parameters and call arguments.)
(add E example)
Line 109: Line 109:
CL-USER> (sort-table *data* :ordering (lambda (a b) (> (length a) (length b))))
CL-USER> (sort-table *data* :ordering (lambda (a b) (> (length a) (length b))))
(("zap" "zip" "Zot") ("a" "b" "c") ("" "q" "z"))</lang>
(("zap" "zip" "Zot") ("a" "b" "c") ("" "q" "z"))</lang>

=={{header|E}}==

In E, as in Java and Smalltalk, optional parameters are defined as different methods with the same base name. Methods are distinguished by name (''verb'') and number of parameters (''arity'').

<lang e>def defaultOrdering(a, b) { return a.op__cmp(b) }

def sort {

to run(table) {
return sort(table, 0, false, defaultOrdering)
}
to run(table, column) {
return sort(table, column, false, defaultOrdering)
}
to run(table, column, reverse) {
return sort(table, column, reverse, defaultOrdering)
}

to run(table :List[List[String]], column :int, reverse :boolean, ordering) {
return table.sort(fn a, b {
def ord := ordering(a[column], b[column])
if (reverse) { -ord } else { ord }
})
}

}</lang>

Named parameters are not builtin, but map-patterns may be used as a substitute. (TODO: Example of this) [[Category:E examples needing attention]]


=={{header|Fortran}}==
=={{header|Fortran}}==