Тема: AHK: Встроенные методы объекта.
Всем добра!
Так, работает:
a := [13, 45, 67, 89]
b := a.Clone()
b.InsertAt(2, 7)
aFunc(a*)
aFunc(b*)
OutputDebug,Finish
aFunc(one, two, three, four, five := 0) {
OutputDebug,Call
MsgBox,,Title,% one "`n" two "`n" three "`n" four "`n" five
}
И так:
a := [13, 45, 67, 89]
b := InsertMe(CloneMe(a), 7, 2)
aFunc(a*)
aFunc(b*)
aFunc(a.Clone()*)
aFunc(InsertMe(CloneMe(a), 9, 3)*)
aFunc(InsertMe(a.Clone(), 19, 4)*)
OutputDebug,Finish
aFunc(one, two, three, four, five := 0) {
OutputDebug,Call
MsgBox,,Title,% one "`n" two "`n" three "`n" four "`n" five
}
CloneMe(a) {
b := []
Loop,% a.Length()
b.Push(a[A_Index])
return b
}
InsertMe(b, item, pos := 1) {
c := [], i := 1
Loop,% b.Length() + 1
c.Push(A_Index != pos ? b[i++] : item)
return c
}
А так, вызывает только первый раз и выходит:
a := [13, 45, 67, 89]
b := a.Clone().InsertAt(2, 7)
aFunc(a*)
aFunc(b*)
aFunc(a.Clone().InsertAt(2, 7)*)
aFunc((a.Clone()).InsertAt(2, 7)*)
c := a.Clone()
aFunc(c.InsertAt(2, 7)*)
OutputDebug,Finish
aFunc(one, two, three, four, five := 0) {
OutputDebug,Call
MsgBox,,Title,% one "`n" two "`n" three "`n" four "`n" five
}
Скажите пожалуйста, это следует отправить в баг-репорт, или я не правильно делаю запись?
UPD:
Туплю. InsertAt() - ведь ничего не возвращает, а только модифицирует объект.