Merge branch 'feature/list-where' of git://github.com/zeckalpha/wren into zeckalpha-feature/list-where

Conflicts:
	builtin/core.wren
	src/wren_core.c
This commit is contained in:
Bob Nystrom
2014-02-15 11:21:24 -08:00
3 changed files with 27 additions and 3 deletions

View File

@ -16,7 +16,7 @@ class List {
}
return result
}
map (f) {
var result = []
for (element in this) {
@ -24,4 +24,12 @@ class List {
}
return result
}
where (f) {
var result = []
for (element in this) {
if (f.call(element)) result.add(element)
}
return result
}
}

View File

@ -67,6 +67,14 @@ static const char* libSource =
" }\n"
" return result\n"
" }\n"
" \n"
" where (f) {\n"
" var result = []\n"
" for (element in this) {\n"
" if (f.call(element)) result.add(element)\n"
" }\n"
" return result\n"
" }\n"
"}\n";
// Validates that the given argument in [args] is a Num. Returns true if it is.
@ -275,9 +283,9 @@ static PrimitiveResult callFunction(WrenVM* vm, Value* args, int numArgs)
{
fn = AS_FN(args[0]);
}
if (numArgs < fn->numParams) RETURN_ERROR("Function expects more arguments.");
return PRIM_CALL;
}

8
test/list/where.wren Normal file
View File

@ -0,0 +1,8 @@
var a = [1, 2, 3]
var moreThan1 = fn (x) { return x > 1 }
var moreThan10 = fn (x) { return x > 10 }
var b = a.where(moreThan1)
var c = a.where(moreThan10)
IO.print(b) // expect: [2, 3]
IO.print(c) // expect: []