diff options
Diffstat (limited to 'matlab/Env.m')
| -rw-r--r-- | matlab/Env.m | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/matlab/Env.m b/matlab/Env.m new file mode 100644 index 0000000..1d080a3 --- /dev/null +++ b/matlab/Env.m @@ -0,0 +1,36 @@ +classdef Env < handle + properties + data + outer + end + methods + function env = Env(outer) + env.data = containers.Map(); + env.outer = outer; + end + function ret = set(env, k, v) + env.data(k.name) = v; + ret = v; + end + function ret = find(env, k) + if env.data.isKey(k.name) + ret = env; + else + if ~islogical(env.outer) + ret = env.outer.find(k); + else + ret = false; + end + end + end + function ret = get(env, k) + fenv = env.find(k); + if ~islogical(fenv) + ret = fenv.data(k.name); + else + throw(MException('ENV:notfound', ... + strcat('''', k.name, ''' not found'))); + end + end + end +end |
