To je kako jezik sam radi, tako da bih malo refaktorirao funkciju da odgovara mojim potrebama.Ocito je da ovo var speed = userSpeed1 || userSpeed2 || userSpeed3 || defaultSpeed nije rijesenje za use-case koji ti imas, tako da ne treba nista "forsirati’.
I dalje stojim iza toga da cu se uvijek oslanjati na jezik i njegova pravila nego na nesto poput ovog
Pa ne trebam ti ja o tome pričat, code koji si napisao
je sasvim dovoljan da uočiš koji je tu edge-case.
Pogotovo što sam ti još ranije napisao:
…i onda ti nakon svega ne uočiš da je sasvim legitimno da brzina bude zadana kao nula.
I onda sam ti ja nakon godinu dana kriv što ne znam objašnjavati.
A sada dalje…što me još nisi shvatio…
Nećeš nikada morati pisati tako.
Jer u 99.99% slučajeva ćeš trebati samo iz defaultnog flag izraza isključiti uljeza, tako će se gornji selektor brzina pisati na način:
Flag je znači samo: "-1", te nije nikakva kobasica.
minus (-) je instrukcija da iz defautlnog flaga isključuješ karaktere, a “1” je instrukcija da se 1 tretira kao true, a 0 kao false. Pa pošto zbog minusa to pravilo isključimo iz boolean provjere…0 će nam biti tretirana kao true i stvar će raditi po očekivanom.
Ako je to kompleksan pristup za pokriti 2048 različitih kombinacija, ubij me.
Jedino velim, na sintaksi flaga ću još poraditi…imam tu zanimljivih ideja.
Ako možeš ponuditi elegantnije rješenje, rado prihvaćam.
Ponudi kako bi rješio gornji problem…ali generalno rješenje koje se može reciklirati.
I imaj na umu da chuse() nije jedina metoda koja se može oslanjati na boolean provjeru unutar sebe…gdje mi želimo izvana imati kontrolu nad tim kako će ona unutar sebe tretirati boolean stanja za različite tipove varijabli.
I još ovo da iskomentiram…
Proširenje nije ograničenje. Ne kužim kako to uporno ignoriraš shvatiti.
Ako se nešto uvede dodatno…ti nisi prisiljen to koristiti…i nisi ograničen koristiti nativni pristup koji ti je i dalje dostupan.
Ali ako naletiš na situaciju kao iz primjera sa odabirom prve definirane brzine … onda je na tebi hoćeš li koristiti tu dodanu mogućnost da to riješiš elegantno…ili ćeš pisati svaki puta špageti-code da izvučeš takvu situaciju.
Nije to nikakav edge-case vec problem koji ti ti zadao nije uopste use-case za ovakav dijelic koda:
U “normalnim” jezicima, kao sto si i sam spomenuo, to nije ni dozovoljeno.A posto u JS-u mozes raditi prakticno sta te volja, onda dobijes takav rezultat kakav jeste.
Da to je sasvim legitmno, ali ne bas legitimno za var x = y || z || c na koji si me naveo, ali ajde reci cemo da mi je promaklo
Imamo razlicite definicije elegancije tako da bolje ne
Ko je rekao da je ogranicenje ? Postoji nesto sto se zove stil kodiranja, koji svaki projekat/tim/firma ima.Vjerujem da bi super konzistentan kod izasao kad bi ti koristio te tvoje funkcije, a ja nesto totalno drugo da rijesim isti problem.
Izgleda da imamo razlicite definicije spageti koda takodjer
Umalo da zaboravim ovo
Nakon godinu dana i toliko ispisanih tema o Normu, koliko je osoba shvatilo o cemu se radi ? Mozda bolje pitanje, koliko je osoba shvatilo odmah ?
Gornji problem je trivijalan…rješenje kakvo god se nakuca u 2 minute. Volio bi stvarno vidjeti što tebi znači elegantni pristup takvim sitnicama.
Nego, rekao sam da me nečemu ova tema naučila …
…osvjestila me je da da može postojati globalna kontrola kako će se ti flagovi digitalnih stanja tretirati.
To je zaslužilo zasebnu temu: Flags as string
Pokazacu, al daj mi malo vremena da skontam nesto kripticno u tvom stilu
Kao sto rekoh treba mi vise konteksta malo, definisi neke zahtjeve pa cu ti vrlo rado kodom pokazati kako se to radi - bar za mene nikad to nije bio problem
Za mene ništa novo da stvari o kojima pričam tek dolaze u praksi.
U zadnjih 10g. se nije desilo da sam nešto izmislio što nije naknadno došlo…ili da je već postojalo. Možda svega par stvari tek čeka da bude globalno “izmišljeno” i prihvaćeno.
Pošto si ti imao poprilično tvrdoglav stav u smjeru da ovakvo nešto nema svoju primjenu i smisao…nadam se da sada uviđaš da govorim o stvarima koje prije ili kasnije zajednica shvati da trebaju postojati. Šteta jedino što ti treba potvrda od zajednice da nešto treba postojati…a da ne možeš tu istu potvrdu pronaći u samoj funkcionalnosti/potrebi neke ideje.
Jer svaka ideja govori sama za sebe da je korisna…nije potreban nitko da ju “aprova” da bi ideja dobila svoju svrhu i smisao.
Ako stvarno smatras da je ovo tvoje rijesenje u rangu nullish coalescing operatora, onda fakat ne znam
Nisam ja tvrdoglav, vec ne trazim genericno rijesenje za sve zivo i radije cu se fokusirati na konkretnu implementaciju i uraditi dodatni check nego imati nesto ovako
var state = myBoolean(x, "1beot");
Ne zelim se vise ponavljati zasto tako ne bih rijesavao stvari, mislim da sam rekao vec dosta puta.
Medjutim kad je vec tu nesto u samom jeziku, koje rijesava taj specifican problem na jednostavan, citljiv i elegantan nacin zasto to ne bih koristio ?
Prvo si ignorirao da uopće postoji problem
Nadam se da smo barem to onda razjasnili.
…a logično ako do sada nisi bio svjestan ni problema, ne očekujem onda da razumiješ zašto gornje rješenje pokriva samo uzak spektar problema.
Drugo, gornje rješenje nije skalabilno na sve jezike…ja kada rješavam takve probleme (za koje drugi još niti ne znaju i ne priznaju da postoje) …već sada tražim rješenja koja su lako primjenjiva za bilo koji jezik koji prati neke najosnovnije principe koje prati svaki jezik.
I na kraju krajeva…ja uopće nemam problema sa rješenjima koje nudi neki jezik.
No najčešće kada ja stvaram rješenja…tada ih jezik još ne nudi. A ja nisam onaj koji čeka da mu drugi riješe problem…
Ignorirao (ako zelis tako nazvati to) sam zato sto je tvoje inicijalno objasnjanje kao i uvijek bilo konfuzno.Ocito ne samo meni, vec i ostalim koji su se ukljucilji odnosno nisu ukljucili u temu.
Opet cu ti ponovit da probleme ocito rijesavamo na razliciti nacin.Za razliku od tebe, ja ne ciljam da mi svaka funkcija bude genericna, i da moze prihvatati sve i svasta i proizvoditi sve i svasta.
Zasto to drugi i ja ne rade, a zasto ti radis to je posebna tema za raspravu.
Ti si jedini lik od koga sam cuo da zeli prenositi stvari iz jednog jezika u drugi
Ni ja, samo ih rijesim na nacin koji se razlikuje od tvoga
Nisi ignorirao…nego si čak napisao komad code-a koji je sadržavao očitu grešku kojom si pokazao da nisi generalno upoznat s ovom problematikom. Sa mojim objašenjenjima ili bez njih…nebitno je, pokazao si kako razmišljaš.
Nemoj biti baba i ovakva izvlačenja radit…molim te.