Skocz do zawartości
nowy_user

json, ds_map i wartość undefined.

Rekomendowane odpowiedzi

Witajcie,

 

Tworzę aplikację, w której do tej pory miałem zaimplementowany system savów oparty na pliku ini zawierającym szereg zmiennych, które były zaczytywane przy kolejnym uruchomieniu aplikacji.  Jak wiecie przy użyciu funkcji ini_read_string oraz ini_read_real  podajemy 3 wartości: (section, key, default).  Ta ostatnia - default - jest prawdziwym zbawieniem, ponieważ w przypadku braku możliwości zaczytania danej wartości ( np. Z powodu usunięcia pliku, albo co bardziej istotne - z powodu aktualizacji aplikacji, gdzie dochodzą nowe zmienne) przypisuje wartość którą sobie ustalimy wcześniej. Działało to wyśmienicie i byłem zadowolony z mojego systemu.

 

Muszę ten system jednak zmienić, ponieważ chce przechowywać dane w chmurze, i najlepszy do tego jest skorzystanie z ds_map i wygenerowanie stringa json. Problem pojawia się, gdy próbuję odczytać dane. Po użyciu funkcji json_decode otrzymujemy ds_mapę, z której możemy dowolnie sczytywać zmienne, ale niestety funkcja ds_map_find_value(id,key) , nie daje  możliwości wpisania zmiennej default. Okazuje się, że gdy nie uda się znaleźć danego ‘key’ to przypisana wartość to ‘undefined’ co ma druzgocące skutki i potem crashuje aplikację.

 

I teraz pytanie, czy ja muszę ręcznie , po wczytaniu zmiennych pozmieniać wszystkie ‘undefined’ czyli napisać kod  w stylu:

 

var _default=0;

 

If zmienna1 == null

zmienna = _default;

 

If zmienna2 == null

zmienna2 = _default;

 

If zmienna3 itd..

 

 

Czy może jest jakiś szybszy sposób na przypisanie domyślnej wartości dla zmiennej, która nie znalazła ‘keya’  przy wyszukiwaniu z mapy?

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Nie jestem pewien i nie mogę teraz sprawdzić, bo jestem na linuxie, ale zrób taki skrypt:

 

/// SKRYPT: ds_map_find_value_default(id, key, default)

var _result = ds_map_find_value(argument0, argument1);
if (is_undefined(_result)) return argument2;
return _result;
  • Lubię (+1) 2

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Działa, że też na to sam nie wpadłem :) Dzieki Gnysek !

  • Lubię (+1) 1

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się tutaj.

Zaloguj się tutaj

  • Przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników, przeglądających tę stronę.

×