Merge pull request #312 from yawor/struct_val_default

Added ability to return default value from struct_val() if keyword is not present
This commit is contained in:
Revar Desmera 2020-11-16 15:28:14 -08:00 committed by GitHub
commit 8d67ce6df7
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 8 additions and 4 deletions

View file

@ -64,16 +64,17 @@ function struct_remove(struct, keyword) =
// Function: struct_val()
// Usage:
// struct_val(struct,keyword)
// struct_val(struct, keyword, default)
// Description:
// Returns the value for the specified keyword in the structure, or undef if the keyword is not present
// Returns the value for the specified keyword in the structure, or default value if the keyword is not present
// Arguments:
// struct = input structure
// keyword = keyword whose value to return
function struct_val(struct,keyword) =
// default = default value to return if keyword is not present, defaults to undef
function struct_val(struct, keyword, default=undef) =
assert(is_def(keyword),"keyword is missing")
let(ind = search([keyword],struct)[0])
ind == [] ? undef : struct[ind][1];
ind == [] ? default : struct[ind][1];
// Function: struct_keys()

View file

@ -27,6 +27,9 @@ module test_struct_val() {
assert(struct_val(st,"Foo") == 91);
assert(struct_val(st,"Bar") == 28);
assert(struct_val(st,"Baz") == 9);
assert(struct_val(st,"Baz",5) == 9);
assert(struct_val(st,"Qux") == undef);
assert(struct_val(st,"Qux",5) == 5);
}
test_struct_val();