W większości języków OO, w których zmienne mogą wskazywać na obiekty, mogą również mieć wartość zerową, co jest bardzo wygodne.matlab - co jest odpowiednikiem null/None/nil/NULL itd.?
Matlab, że posiada funkcję, która przetwarza polecenia, a następnie powraca układ komórkowy lub false
(równa zeru - który jest inny wspólny wzorzec), jeśli nie:
function re = parse(s)
...
if (invalid)
re = false;
return;
end
end
problem polega na tym, że kiedy sprawdzić wynik, to daje błąd:
re = parse(s);
if (false == re)
Undefined function 'eq' for input arguments of type 'cell'.
pisałem funkcję sprawdzenia go bez błędu: strcmp('logical', class(re)) && false == re
, ale to wydaje się być bardzo powolny do stosowania w gorących obszarów komunikatu kod, a także niewygodne, jeśli muszę dodać thi s funkcji do każdego pliku M, który piszę.
Korzystanie z NaN
jest jeszcze gorsze, ponieważ oprócz rzucania tego błędu, nie jest on równy samemu sobie.
Jaka jest lepsza alternatywa do użycia z tym wzorem?
na adres jednego ze swoich punktów, idiomatyczne MATLAB jest użycie 'isNaN (A)', aby sprawdzić, nan, zamiast "A == NaN" (ponieważ jak się dowiedziałeś, ten drugi nie praca). – tmpearce
To byłaby inna alternatywa, ale niestety np. 'isnan ({})' wyrzuca błąd. –