AjErl.Language.Map.SetKeyValues C# (CSharp) Method

SetKeyValues() public method

public SetKeyValues ( IList keys, IList newvalues ) : Map
keys IList
newvalues IList
return Map
        public Map SetKeyValues(IList<object> keys, IList<object> newvalues)
        {
            object[] newvals = new object[this.values.Length];
            Array.Copy(this.values, newvals, this.values.Length);

            for (int k = 0; k < keys.Count; k++)
            {
                object key = keys[k];
                int position = ((IList<object>)this.keys).IndexOf(key);

                if (position < 0)
                    throw new InvalidOperationException(string.Format("undefined key {0}", key));

                newvals[position] = newvalues[k];
            }

            return new Map(this.keys, newvals);
        }

Usage Example

Ejemplo n.º 1
0
        public void SetKeyValues()
        {
            Map map = new Map(new object[] { new Atom("a"), new Atom("b"), new Atom("c") }, new object[] { 1, 2, 3 });

            Map newmap = map.SetKeyValues(new object[] { new Atom("c"), new Atom("a") }, new object[] { 4, 5 });

            Assert.AreEqual(1, map.GetValue(new Atom("a")));
            Assert.AreEqual(2, map.GetValue(new Atom("b")));
            Assert.AreEqual(3, map.GetValue(new Atom("c")));

            Assert.AreEqual(5, newmap.GetValue(new Atom("a")));
            Assert.AreEqual(2, newmap.GetValue(new Atom("b")));
            Assert.AreEqual(4, newmap.GetValue(new Atom("c")));
        }
All Usage Examples Of AjErl.Language.Map::SetKeyValues