Reorganize site to make room for documenting the other built-in modules.

This commit is contained in:
Bob Nystrom
2015-11-08 13:31:22 -08:00
parent 8c0dae1320
commit 82706b74fc
52 changed files with 771 additions and 178 deletions
+45
View File
@@ -0,0 +1,45 @@
^title Fn Class
A first class function—an object that wraps an executable chunk of code.
[Here][functions] is a friendly introduction.
[functions]: ../../functions.html
### Fn.**new**(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.
:::wren
var fn = Fn.new {
System.print("The body")
}
It is a runtime error if `function` is not a function.
## Methods
### **arity**
The number of arguments the function requires.
:::wren
System.print(Fn.new {}.arity) //> 0
System.print(Fn.new {|a, b, c| a }.arity) //> 3
### **call**(args...)
Invokes the function with the given arguments.
:::wren
var fn = Fn.new { |arg|
System.print(arg) //> Hello world
}
fn.call("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 function's arity they are
ignored.