Чтение данных из потоков и передача их в функцию
Экономия на объявлении переменных может привести к нежелательным последствиям.
В частности, так происходит при передаче в качестве параметров функции нескольких читаемых из потока данных. Пусть мы хотим загрузить данные из файла и передать их в функцию. При этом мы можем написать так: Код:
myFunc(ReadInt(file),ReadFloat(file),ReadFloat(file)) НО! Параметры в функции подставляются справа-налево! Вот здесь и выходит боком экономия. Ниже приведён небольшой пример, подтверждающий возникновение нежелательного результата. Код:
Strict param 3 param 2 param 1 Для предотвращения подобных неувязок можно: 1. ввести дополнительные переменные, читать данные в них, а потом передавать в функцию: Код:
Local p1 = ReadInt(file) Код:
function myFunc(p3#,p2#,p1) |
Ответ: Чтение данных из потоков и передача их в функцию
Жека
не обязательно справа-налево, вообще порядок вычисления аргументов никак не гарантируется, хотя тут порядок справа-налево можно объяснить тем что аргументы передаются через стек в прочем раньше и прерывания вычисления выражения типа AAA and BBB and CCC не было, вычислялось полностью даже если одна из переменных была false а вот : Цитата:
|
Ответ: Чтение данных из потоков и передача их в функцию
про безопасность и удобность (с точки зрения понимания логики) использования предложенных вариантов, точнее - второго, я умолчал :)
не знаю на счёт изменений порядка в другой системе, но мне кажется, что он останется прежним |
Ответ: Чтение данных из потоков и передача их в функцию
:@ [:]|||||[:]
www.boolean.name > Программирование игр для компьютеров > Blitz3D > FAQ LOAD-SAVE Цитата:
|
Ответ: Чтение данных из потоков и передача их в функцию
Угу. спасибо!
|
Часовой пояс GMT +4, время: 18:35. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot