Exemple #1
0
        public NamedValueDeclaration atIfAbsent(ESSymbol name, Functor0 <NamedValueDeclaration> notFoundAction)
        {
            StackResidentDeclaration localDeclaration;

            if (localBindings.TryGetValue(name, out localDeclaration))
            {
                return(localDeclaration);
            }
            NonLocalVariableDeclaration nonLocalVariableDeclaration;

            if (nonLocalBindings != null && nonLocalBindings.TryGetValue(name, out nonLocalVariableDeclaration))
            {
                return(nonLocalVariableDeclaration);
            }
            if (outerScope == null)
            {
                return(notFoundAction == null ? null : notFoundAction());
            }
            return(outerScope.atIfAbsent(name, notFoundAction));
        }