public virtual Variable Clone() { Variable newVar = new Variable(); newVar.Copy(this); return(newVar); }
public static Variable GetItem(string data, ref int from) { MoveForwardIf(data, ref from, Constants.NEXT_ARG, Constants.SPACE); if (data.Length <= from) { throw new ArgumentException("Непълно дефиниране на функциите"); } Variable value = new Variable(); if (data[from] == Constants.QUOTE) { // Извличаме низ между котировките. from++; // Пропуснете първата оферта. if (from < data.Length && data[from] == Constants.QUOTE) { // аргументът е "" value.String = ""; } else { value.String = Utils.GetToken(data, ref from, Constants.QUOTE_ARRAY); } from++; // пропуснете следващото разделяне Чар } else if (data[from] == Constants.START_GROUP) { // Извличаме списък от къдрави скоби. from++; // Прескачане на първата скоба. bool isList = true; value.Tuple = GetArgs(data, ref from, Constants.START_GROUP, Constants.END_GROUP, out isList); return(value); } else { // Променлива, функция или число. Variable var = Parser.LoadAndCalculate(data, ref from, Constants.NEXT_OR_END_ARRAY); value.Copy(var); } MoveForwardIf(data, ref from, Constants.END_ARG, Constants.SPACE); return(value); }
public virtual Variable DeepClone() { Variable newVar = new Variable(); newVar.Copy(this); if (m_tuple != null) { List <Variable> newTuple = new List <Variable>(); foreach (var item in m_tuple) { newTuple.Add(item.DeepClone()); } newVar.Tuple = newTuple; } return(newVar); }