Повідомлення створено: 14. 10. 2013 [08:23]
|
dell
Путин Краб
Автор теми
Зареєстрован(а) с: 09.04.2013
Повідомлення: 28
|
Например имеем массив:
Если возьмем несуществующий элемент массива, например k[1], то значение его "<EVAL>". Если же обратимся к несуществующему элементу массива вот так k[1][1], то получаем некоторое значение, которое не "<EVAL>", при сравнении с любой строкой дает 1. Если же просто вывести
то получаем 0. (Происходит ли в данном случае преобразование типов?)
Почему? Где об этом можно почитать? В документации на модуль "<JavaLikeCalc>" этого не нашел.
|
Повідомлення створено: 14. 10. 2013 [13:11]
|
roman
Roman Savochenko
Moderator Contributor Developer
Зареєстрован(а) с: 12.12.2007
Повідомлення: 3750
|
"dell" wrote:
Например имеем массив:
Если возьмем несуществующий элемент массива, например k[1], то значение его "<EVAL>".
Не совсем EVAL, а NULL, который при переводе в строку стаёт EVAL.
"dell" wrote:
Если же обратимся к несуществующему элементу массива вот так k[1][1], то получаем некоторое значение, которое не "<EVAL>", при сравнении с любой строкой дает 1.
"false" он так возвращает.
А результат сравнения зависит, кто первый. если элемент массива, которого нет то строка приведётся в целое и если там не первая и не нулевая цифра то будет true(1). А если записать наоборот, то false приведётся в строку.
"dell" wrote:
Где об этом можно почитать? В документации на модуль "<JavaLikeCalc>" этого не нашел.
Про преобразования там и написано, а про результаты в случае некорректном доступе к элементам объекта не написано ибо специфично и в целом такая запись это ошибка.
Learn, learn and learn better than work, work and work.
|