Exemple #1
0
 public override IValue Subtract(Context context, IValue value)
 {
     if (value is ListValue)
     {
         SetValue set = new SetValue(this.ItemType);
         value = set.Add(context, value);
     }
     if (value is SetValue)
     {
         HashSet <IValue> excluded = ((SetValue)value).items;
         HashSet <IValue> values   = new HashSet <IValue>();
         foreach (IValue item in items)
         {
             if (!excluded.Contains(item))
             {
                 values.Add(item);
             }
         }
         return(new SetValue(ItemType, values));
     }
     else
     {
         throw new SyntaxError("Illegal : List - " + value.GetType().Name);
     }
 }
Exemple #2
0
 public IValue Subtract(Context context, IValue value)
 {
     if (value is ListValue)
     {
         SetValue set = new SetValue(this.ItemType);
         value = set.Add(context, value);
     }
     if (value is SetValue)
     {
         ListValue result = new ListValue(ItemType);
         result.AddRange(this);
         result.RemoveAll(item => ((SetValue)value).HasItem(context, item));
         return(result);
     }
     else
     {
         throw new SyntaxError("Illegal : List - " + value.GetType().Name);
     }
 }