View source code
Display the source code in std/functional.d from which this
page was generated on github.
Report a bug
If you spot a problem with this page, click here to create a
Bugzilla issue.
Improve this page
Quickly fork, edit online, and submit a pull request for this page.
Requires a signed-in GitHub account. This works well for small changes.
If you'd like to make larger changes you may want to consider using
local clone.
Template std.functional.bind
Passes the fields of a struct as arguments to a function.
template bind(alias fun)
;
Can be used with a function literal to give temporary names to the fields of a struct or tuple.
Contained Functions
Name | Description |
---|---|
bind |
Parameters
Name | Description |
---|---|
fun | Callable that the struct's fields will be passed to. |
Returns
A function that accepts a single struct as an argument and passes its
fields to fun
when called.
Example
Giving names to tuple elements
import std .typecons : tuple;
auto name = tuple("John", "Doe");
string full = name .bind!((first, last) => first ~ " " ~ last);
writeln(full); // "John Doe"
Example
Passing struct fields to a function
import std .algorithm .comparison : min, max;
struct Pair
{
int a;
int b;
}
auto p = Pair(123, 456);
assert(p .bind!min == 123); // min(p.a, p.b)
assert(p .bind!max == 456); // max(p.a, p.b)
Example
In a range pipeline
import std .algorithm .iteration : map, filter;
import std .algorithm .comparison : equal;
import std .typecons : tuple;
auto ages = [
tuple("Alice", 35),
tuple("Bob", 64),
tuple("Carol", 21),
tuple("David", 39),
tuple("Eve", 50)
];
auto overForty = ages
.filter!(bind!((name, age) => age > 40))
.map!(bind!((name, age) => name));
assert(overForty .equal(["Bob", "Eve"]));
Authors
License
Copyright © 1999-2024 by the D Language Foundation | Page generated by ddox.