@@ -69,19 +69,19 @@ func (x VMSlice) SortDefault() {
69
69
sort .Sort (VMSliceUpSort (x ))
70
70
}
71
71
72
- func (t VMSlice ) MethodMember (name int ) (VMFunc , bool ) {
72
+ func (x VMSlice ) MethodMember (name int ) (VMFunc , bool ) {
73
73
74
74
// только эти методы будут доступны из кода на языке Гонец!
75
75
76
76
switch names .UniqueNames .GetLowerCase (name ) {
77
77
case "сортировать" :
78
- return VMFuncMustParams (0 , t .Сортировать ), true
78
+ return VMFuncMustParams (0 , x .Сортировать ), true
79
79
case "сортироватьубыв" :
80
- return VMFuncMustParams (0 , t .СортироватьУбыв ), true
80
+ return VMFuncMustParams (0 , x .СортироватьУбыв ), true
81
81
case "обратить" :
82
- return VMFuncMustParams (0 , t .Обратить ), true
82
+ return VMFuncMustParams (0 , x .Обратить ), true
83
83
case "скопировать" :
84
- return VMFuncMustParams (0 , t .Скопировать ), true
84
+ return VMFuncMustParams (0 , x .Скопировать ), true
85
85
}
86
86
87
87
return nil , false
@@ -104,9 +104,32 @@ func (x VMSlice) Обратить(args VMSlice, rets *VMSlice) error {
104
104
return nil
105
105
}
106
106
107
+ func (x VMSlice ) CopyRecursive () VMSlice {
108
+ rv := make (VMSlice , len (x ))
109
+ for i , v := range x {
110
+ switch vv := v .(type ) {
111
+ case VMSlice :
112
+ rv [i ]= vv .CopyRecursive ()
113
+ case VMStringMap :
114
+ rv [i ]= vv .CopyRecursive ()
115
+ default :
116
+ rv [i ]= v
117
+ }
118
+ }
119
+ return rv
120
+ }
121
+
107
122
func (x VMSlice ) Скопировать (args VMSlice , rets * VMSlice ) error { //VMSlice {
108
123
rv := make (VMSlice , len (x ))
109
124
copy (rv , x )
125
+ for i ,v := range rv {
126
+ switch vv := v .(type ) {
127
+ case VMSlice :
128
+ rv [i ]= vv .CopyRecursive ()
129
+ case VMStringMap :
130
+ rv [i ]= vv .CopyRecursive ()
131
+ }
132
+ }
110
133
rets .Append (rv )
111
134
return nil
112
135
}
0 commit comments