among

Find value among values, returning the 1-based index of the first matching value in values, or 0 if value is not among values. The predicate pred is used to compare values, and uses equality by default.

template among(values...)
uint
among
(
Value
)
(
Value value
)
if (
!is(CommonType!(Value, values) == void)
)

Parameters

value

The value to search for.

values

The values to compare the value to.

Return Value

0 if value was not found among the values, otherwise the index of the found value plus one is returned.

Examples

assert(3.among(1, 42, 24, 3, 2));

if (auto pos = "bar".among("foo", "bar", "baz"))
    assert(pos == 2);
else
    assert(false);

// 42 is larger than 24
assert(42.among!((lhs, rhs) => lhs > rhs)(43, 24, 100) == 2);

Alternatively, values can be passed at compile-time, allowing for a more efficient search, but one that only supports matching on equality:

assert(3.among!(2, 3, 4));
assert("bar".among!("foo", "bar", "baz") == 2);

See Also

find and canFind for finding a value in a range.

Meta

Suggestion Box / Bug Report