Еще пара заметок про язык squirrel и грабли в нем
Оператор in
проверяет, есть ли ключ в таблице, но не проверяет вхождение элемента в массив
т.е. так нельзя:
if (1 in [1,2,3]) doSomethink(); |
Но можно так:
if (1 in {[1]=null,[2]=null,[3]=null]) doSomethink(); |
При создании функций с последующей их передачей в другие функции следует помнить, что Squirell будет искать переменные в текущей области видимости (там, куда мы передадим фукнцию).
Например:
class a { val = 1 } |
Т.е. при функция может повести себя по разному, в зависимости от того, куда ее передать.
Если же мы хотим передать в функцию метод объекта, изменяющий сам объект, то необходимо передать сам объект в замыкании функции:
class Do |