Files
wren/doc/site/core/fn.markdown
T

43 lines
1.1 KiB
Markdown
Raw Normal View History

^title Fn Class
^category core
A first class function—an object that wraps an executable chunk of code.
[Here](../functions.html) is a friendly introduction.
### new **Fn**(function)
Creates a new function from... `function`. Of course, `function` is already a
function, so this really just returns the argument. It exists mainly to let you
create a "bare" function when you don't want to immediately pass it as a [block
argument](../functions.html#block-arguments) to some other method.
:::dart
var fn = new Fn {
IO.print("The body")
}
It is a runtime error if `function` is not a function.
## Methods
### **arity**
The number of arguments the function requires.
:::dart
IO.print(new Fn {}.arity) // 0.
IO.print(new Fn {|a, b, c| a }.arity) // 3.
### **call**(args...)
Invokes the function with the given arguments.
:::dart
var fn = new Fn { |arg|
IO.print(arg)
}
fn.call("Hello world") // Hello world.
It is a runtime error if the number of arguments given is less than the arity of
the function. If more arguments are given than the arity of the function they
will be discarded.