v/vlib/builtin/lambda_expr_array_test.v

50 lines
976 B
V

const a = [4, 5, 1, 2, 5, 9]
fn test_map() {
assert a.map(it) == a
assert a.map(it * 10) == [40, 50, 10, 20, 50, 90]
assert a.map(|x| x) == a
assert a.map(|x| x * 10) == [40, 50, 10, 20, 50, 90]
assert a.map(|x| 'x: ${x}') == ['x: 4', 'x: 5', 'x: 1', 'x: 2', 'x: 5', 'x: 9']
assert a.map(|x| f64(x) * 10.0) == [40.0, 50.0, 10.0, 20.0, 50.0, 90.0]
}
fn test_filter() {
assert a.filter(it > 4) == [5, 5, 9]
assert a.filter(it < 4) == [1, 2]
assert a.filter(|x| x > 4) == [5, 5, 9]
assert a.filter(|x| x < 4) == [1, 2]
}
fn test_any() {
assert a.any(it > 4)
assert !a.any(it > 40)
assert a.any(|x| x > 4)
assert !a.any(|x| x > 40)
}
fn test_all() {
assert !a.all(it > 4)
assert a.all(it < 40)
assert !a.all(|x| x > 4)
assert a.all(|x| x < 40)
}
fn each(a []int, cb fn (x int)) {
for x in a {
cb(x)
}
}
fn test_using_lambda_expr_that_does_not_return_as_cb() {
each(a, fn (x int) {
println(x)
})
each(a, |x| println(x))
each(a, |x| dump(x))
}