Как бороться с nil?

Страницы: 1
RSS
Как бороться с nil?
 
При запуске программы первый раз такой вот код выдает ошибку
Код
start6 = tonumber(getFuturesHolding('SPBFUT000000','SPBFUT000pf','BRG9', 0).totalnet) 
...
...am Files\QUIK-Junior\LuaIndicators\m2_14_BRG9_M1.lua:40: attempt to index a nil value
но если я куплю бумагу и потом ее продам например по рыночной, то после этого программа с таким кодом спокойно работает дальше и проверяет количество бумаг на остатке в различные периоды работы кода. По идее понимаю, что надо как то сделать проверку на nil и если nil, то переменной start6 присвоить ноль, но что то методом тыка пока не получилось это сделать, пробовал и так и эдак:
Код
start6 = tonumber(getFuturesHolding('SPBFUT000000','SPBFUT000pf','BRG9', 0).totalnet) or 0
...
if getFuturesHolding('SPBFUT000000','SPBFUT000pf','BRG9', 0).totalnet==nil then
start6=0
все равно программа ругается на код, подскажите пожалуйста как можно решить эту задачу?  
человек (не робот)
 
Код
fh = getFuturesHolding('SPBFUT000000','SPBFUT000pf','BRG9', 0)
if fh then start6 = fh.totalnet else start6 = 0 end
 
Вторую строчку можно записать короче:
Код
start6 = fh and fh.totalnet or 0
 
Можно еще проверить на тип возвращаемых данных
Код
type(fh) == "table"
 
Цитата
Алексей написал:
Вторую строчку можно записать короче:
Код
  start6  =  fh  and  fh.totalnet  or   0   
Спасибо всем большое за помощь, посробую вечером)
человек (не робот)
 
Да все получилось, работает). Спасибо.
человек (не робот)
Страницы: 1
Читают тему (гостей: 1)
Наверх