- Kormányok / autós szimulátorok topikja
- Többszörösére növeli az üzemidőt az LG 1 Hz-es LCD panelje
- Házimozi belépő szinten
- ThinkPad (NEM IdeaPad)
- Milyen billentyűzetet vegyek?
- Bambu Lab 3D nyomtatók
- Soundbar, soundplate, hangprojektor
- DUNE médialejátszók topicja
- Androidos fejegységek
- Milyen notebookot vegyek?
-
PROHARDVER!

Új hozzászólás Aktív témák
-
samujózsi
senior tag
Kavarhatok picit még a konstans témán?
Van itt olyan, aki látott már közelebbről ú.n. funkcionális programnyelvet? (haskell, erlang)
Van róluk valami kellemetlen emlékem, hogy ezekben ugyan vannak változók, de azok valójában konstansként működnek.
Ez tényleg így van? Ha igen, miért? -
Tigerclaw
nagyúr
válasz
instantwater
#13646
üzenetére
Úgy láttam hogy Swiftben is így használják, ezért is meglepően sok a konstans a példákban ha más nyelv után tanulod.
-
I02S3F
addikt
Köszönöm szépen! Tökéletes!
-
Drizzt
nagyúr
Mondjuk szamlak tipusa. Van betet, hitel, meg mittuodmenmilyen. Termeszetesen ez se tokeletes pelda, mert akar kesobb is keletkezhetnek uj tipusok. Es akkor kodhoz kell nyulni, ha konstansba rakta az ember az erteket. Egyebkent ha valaminek a zart ertekkeszletet akarja megadni az ember, mint az en peldam is, akkor meg inkabb enum. Az is egyfajta konstans. Ami a te peldadban van, az tipikusan property-bol konfiguralhato ertek kellene legyen, legalabbis javaban. Viszont pl. az, hogy melyik property-bol kell felolvasni, meg mi a property default erteke, azt mar tipikusan konstanskent szokas eltarolni.
Vagy jo konstans pl. a honapok szama egy evben. Azert az egeszen ritkan valtozik. :D
-
Akkor most jegyezzük meg, hogy JavaScriptben ez egy kicsit másképp működik
Ott a konstans az egy konstans pointer, tehát nem lehet neki újra értéket adni, VISZONT, ha ez a pointer egy nem primitív adatra mutat, tehát objektumra vagy tömbre, akkor annak a TARTALMA módosítható konstans változó esetén is.
Kezdőknek ez elég zavarbaejtő lehet.
Meg sem említem, hogy az objektum összefűzés is shallow.
-
Silεncε
őstag
válasz
I02S3F
#13643
üzenetére
Alapvetően bárhol használhatsz sima változót konstans helyett, maga a konstans inkább arra ad védelmet, hogy az adott változó értéke nem lehet módosítható. Konstanst szoktunk használni például, ha valami előre tudott értéket akarunk a kódba "beégetni", amiket több helyen is eltárolunk. Nálunk például az egyik projektben meg kellett adni több helyen, hogy a munkaidő mikor kezdődik, ezt evidens volt, hogy konstansnak tárolom el, így máshol is tudom használni és elég csak 1 helyen átírni, ha véletlenül változik.
Az, hogy melyik nyelv hogyan kezeli a konstansokat, totál változó, például ott a C++, ahol van a "rendes konstans" meg vannak a #define-ok, amik már el sem jutnak a fordításig, mert a preprocessor lecseréli őket a #define-ban megadott értékre.
Egy szó mint száz: simán használhatsz bárhol változót konstans helyett, lényegében ugyanazt a hatást fogod elérni, viszont a konstans többletvédelmet ad, mivel miután definiáltad, nem tudod később az értékét változtatni (szóval ha mondjuk véletlenül bekeveredik egy értékadás bal oldalára, a fordító/interpreter szólni fog, nem fog megváltozni az értéke, ami miatt aztán debugolhatnál napestig)
-
válasz
I02S3F
#13643
üzenetére
Őszintén nem tudom. Igazából szerintem annyit fognak írni mindenhova, hogy ha valaminek nem akarod, hogy futás közben változzon az értéke, az legyen konstans, a többi meg ne.
Megpróbálok írni egy kis segítséget, hátha sikerül, de nem magyarázok a legjobban(meg kicsit este van már), úgyhogy ha nem megy át, akkor bocs.
Kezdőnek érthető példa mondjuk a logolás lehet. Ugye fut szépen a programod, és akkor irogatsz dolgokat a konzolra (vagy akárhova). Namost, egyszerű példának mondjuk csinálhatsz egy log osztályt, aminek van egy olyan függvénye, hogy debuglog(message), amivel olyan dolgokat írsz ki, amiket normál futás közben nem, mert nem kell, csak a fejlesztést segíti. És akkor csinálsz egy konstanst, hogy debuglog, ami lesz alapból mondjuk false, aztán ha meg kell, átírod true-ra, kigyomlálod a fost és utána újra false.Tegyük hozzá, hogy ez azért nagyon rossz példa, mert amúgy nem így csináljuk, ha normális logolást szeretnénk, hanem van a programnak loglevelje, amit indításkor paraméterben, vagy ini fileban adunk meg és annak megfelelően logol, ha meg nincs megadva semmi, akkor működik egy default értékkel, de tanulásra meg gyakorlásra eleinte tökéletes. Ez a log osztály akár mehet is azonnal szépen külön fileba, és akkor már van is egy bővíthető, újrahasználható osztályunk, jár a keksz.
Kollégák: ha valakinek van jobb ötlete egyszerű példára, hogy az én fos példám el lehessen felejteni, jöhet.
-
Tigerclaw
nagyúr
Annak hogy változót használ konstans helyett, semmi köze nincs a clean code-hoz, vagy a SOLID elvekhez, a laza csatoláshoz, vagy hogy hova rak kommentet, mennyire beszédesek a változó nevek, vagy épp hogy az abban a nyelvben divatos naming conventiont alkalmazza-e.
A konstanst kiválthatja a változó, de fordítva ez jellemzően nem működik. Ezért javasoltam, hogy kezdetben nyugodtan használjon változót.
-
I02S3F
addikt
Köszönöm szépen
! -
válasz
dabadab
#13636
üzenetére
+1
Azt is hozzatennem meg, hogy nincs olyan (plane amikor meg tanulod), hogy a "kis programokat" megirom fosul, nem erdekel, majd a nagyobbat megirom jol, mert nem fogod. Fontos, hogy azt tanuld meg, hogy rendesen kodolunk, szepen, olvashatoan, mert az elso par nagyobb hangvetelu programod meg igy is fos lesz, nemhogy ha eleve a szart tanulja meg a kezed bepotyogni. -
válasz
Tigerclaw
#13635
üzenetére
"Szerintem amíg kisebb programokról van szó, vagyis nem számít ha mondjuk extra optimalizációt jelent esetleg a konstans használata, nyugodtan mehet a változók használata"
Ne felejtsd el, hogy a forráskód elsősorban nem a gépnek szól, hanem az embereknek.
Az, hogy valami konstans vagy változó-e, határozottan a programozói szándékot fejezi ki és mint ilyen, egyáltalán nem mindegy.
-
Tigerclaw
nagyúr
válasz
I02S3F
#13630
üzenetére
Szerintem amíg kisebb programokról van szó, vagyis nem számít ha mondjuk extra optimalizációt jelent esetleg a konstans használata, nyugodtan mehet a változók használata. Eddig pythonban, C#-ban, de sorolhatnám a 25 évvel ezelőtt tanult nyelveket is, egyértelmű választás volt a változók használata és nagyon ritkán került elő hogy legyen valami konstans, vagy legalábbis olyan változó amihez nincs setter.
A legtöbbször a konstans konkrétan alkalmatlan is lenne a feladatra. Eddig a Swiftben láttam hihetetlen mennyiségű konstans használatot, de az speciális konstans, mivel akár futási időben is kaphat értéket, míg más nyelvekben jellemzően fordítási időben már adni kell neki értéket, néha kötelezően már a deklaráláskor.
Fun fact: A víz forráspontja sem konstans, mivel nem csak a hőmérséklettől, hanem a légnyomástól is függ.
Ezért van az, hogy magasabb hegységben hosszabb ideig kell főzni, sőt van amit nem is lehet ott megfőzni kukta nélkül. Ja amúgy a kukta meg a másik véglet. Abban rövidebb ideig kell főzni, mert jóval 100C fok felett forr benne a víz. -
samujózsi
senior tag
-
I02S3F
addikt
Láma kérdés

Jó stratágia majdnem mindent változóba rakni? Kivéve az állandó értékeket. Például: 1méter, a víz forráspontja, stb. -
Ha nem szereted a Javascriptet, nézd meg a Typescriptet, ami tulajdonképpen egy típusos Javascript (microsoftos project, az az Anders Hejlsberg a fő kitalálója, aki a Turbo Pascallal indított, aztán a Delphit majd a C#-ot tervezte) és az Angular (a már javasolt web framework) is arra épül.
-
1eske
tag
válasz
martonx
#13624
üzenetére
Igen, Python alap ablakozója elég rona sajna. C++-ot kihagynám, Electronnal én is szemeztem, ha nagyon nem jutnék dűlőre akkor marad az. Köszönöm!
Silεncε
A Tkinter nagyon nem szép, még ha nem is szépségversenyre csinálnám, azért ennyire igényes lennék a munkámra 😅
Ezt a SceneBuildert kipróbálom, az talán megkönnyíti a dolgomat majd.
samujózsi
Köszi, ezeket lecsekkolom majd még!
-
samujózsi
senior tag
válasz
martonx
#13624
üzenetére
Pythonhoz többféle GUI csomag van.
A beépített, a tkInter, ez buta és ronda, de crossplatform.
Van Qt pyqt és ennek kicsit szabadabb licencelésű változata a pyside. Elég gyenge dokumentációval.
Létezik wxpython, de ez nem tudom, mennyire crossplatform
+ami most nem jut eszembe
-
Silεncε
őstag
Szerintem ha tudod a Java-t, akkor JavaFX. SceneBuilderrel össze tudod pakolni kézzel milyen GUI-t szeretnél, utána már csak a működést kell hozzá megírni. (vagy ugye javahoz van még a Swing is, de azt már nem ajánlott használni, ahelyett a JavaFX sokkal modernebb)
martonx: Pythonban alapértelmezetten (jó, ki kell pipálni a telepítéskor) jön a Tkinter, gyors rákeresve multiplatform, csak ronda. De Pythonhoz használható még a PyQT, ami a QT-nek egy python wrappere, ezt használtam már, lehet vele dolgozni, de mocskosul sok mindent kell hozzá feltelepíteni, hogy tudj rá fejleszteni
-
martonx
veterán
Pythonnak van ablakozó csomagja, hogy mennyire cross-platform azt nem tudom (elég szarul néz ki, azaz akár cross-platform is lehet).
QT ami még eléggé cross-platform (ha szereted magad C++-al szívatni), én leginkább a javascriptet ajánlottam volna (mondjuk Electronnal), de ha azt meg kerülni akarod, akkor kb. mindegy melyik opciót választod. -
1eske
tag
Sziasztok!
Egy GUI-val rendelkező desktop alkalmazást kéne írnom aminek az alábbi funkciókkal kéne rendelkeznie:
- Crossplatform
- Képek drag-and-drop húzása, képek deformálása stb.
- REST kérések küldése előre bekonfigurált végpontok számára, amelyet a GUI-n keresztül lehetne konfigurálniKvázi egy Postman továbbfejlesztve, kicsit felhasználóbarátabbá téve, úgymond "next-next" élmény elérése lenne a cél egye endpointok meghívásakor.
A legnagyobb kérdés a fejemben, hogy milyen nyelven írjam. Java nyelven tudok, a cross platformnak meg is felel, de a GUI-val kicsit hadilábon állok. Egyedül a JavaFX ami talán viszonylag korszerű még, de nekem kicsit nehézkes a működése, de jobb híján akár jó is lehet.
A másik alternatíva a Javascript, amit nem különösebben szeretek, ezért azt szeretném kerülni ha lehet. Esetleg még a Python ami maradt, de annak a GUI részével semmi tapasztalatom nincs.
Ti mit ajánlanátok erre a feladatra?
-
bandi0000
nagyúr
Annyi kiegészítés, hogy az if let-re azért van szügség, mert swiftben csomó változó optional tipusú, és ezáltal csak akkor tudod használni ha kicsomagolod, ezáltal el lehet kerülni a hibákat, amik a null miatt lehetnek
Amúgy ennél egyel jobb megoldás a guard, mert ezzel kiküszöbölhető a sok if let
És arra én sem emlékszek, hogy lehet e érték nélkül létrehozni konstanst, de szerintem igen, és nem null lesz hanem nil
Amúgy annyira nem rossz ez a nyelv, igaz én közvetlenül az Android programozáshoz hasonlítottam, sok okos dolog van benne, viszont ami idegesítő, hogy logika nélkül adtak más neveket benne pl:
Null helyett Nil
Interface helyett ProtocolNyilván ezek megszokhatók, csak felmerül az emberben a kérdés, hogy miért, jah és ugye kizárólag OSX-en lehet fejleszteni, ez is bosszantó, hogy OSX-en talán minden nyelven lehet fejleszteni, viszont apple termékre meg csak OSX-en lehet
-
válasz
Tigerclaw
#13617
üzenetére
Hala egnek keves talalkozasom volt a swift-el, de ezekben pont tudok segiteni szerintem:
- let: Konstanst hozol letre, aminek inicializalaskor adsz erteket, utana csak olvasni tudod, irni nem.
- var: Ez egy sima valtozo, irhato-olvashatoAz "if let x = readLine() {..." szerkezet meg ugyan ugy mukodik, mint minden mas nyelven az if, azaz:
Ha ertelmezheto, akkor eloszor muvelet/operacio kiertekeles tortenik, a megfelelo sorrendben (bal-jobb, zarojelezes, stb), aztan a vegen ami marad van valahogy kiertekelve bool-kent.
Tehat, ami itt tortenik (persze a fenti problema miatt elvileg ez a sor eleve nem fog mukodni, de most az egyszeruseg kedveert tegyuk fel, hogy de):
1) Letrehozol egy x nevu, string tipusu, konstanst
2) Ennek a konstansnak az erteke lesz az, amit a readLine() visszaad
3) Az igy kapott string lesz kiertekelve, mint az if felteteleMondhatjuk ugy is, hogy ugyanaz, mintha ezt irtad volna:
let x = readLine()
if x {...Arra, hogy swiftben az if hogy ertekeli ki a stringet nem emlekszem, de igy tippre azt mondanam, hogy a tipikus modon, tehat ha ures a string, akkor false, amugy true. Amugy ennel sokkal szebb a kod, ha ugy irod, hogy if x.isEmpty().
Arra se emlekszem, hogy swiftben sima konstans lehet-e null, ha igen, azt se art kizarni.Nem frissek az emlekek, ugyhogy ha nagyon nem igaz, amit irtam, valaki majd kijavit, akinek naprakeszebb tudasa van. Ha meg nem, ott a gugli meg a stackoverflow.

-
Tigerclaw
nagyúr
Python és C# mellett belekezdtem a Swift-be is és elég furának tűnik azokhoz képest. Egyrészt mintha félkész lenne. Lehet hogy csak a másik kettő kényeztetett el a rengeteg, néha szinte túl sok beépített class-al, óriási függvénykönyvtárral, de pl. az MS .net dokumentációja is nagyon részletes, ahhoz képest amit a Swift-hez találtam.
Amellett hogy alap classokat nem találok, de ami van az is mintha bonyolultabb, fapadosabb lenne, miközben látni a Python féle kötetlenebb felfogást is.
Most pl. nem értem azt hogy rengeteg helyen constansokat használnak, oda is aminél változó lenne a logikus. Persze tudom, hogy itt máshogy működik a constans, mert futás alatt is lehet neki értéket adni egyszer, de akkor is fura.
Miért jobb egy
let x = readLine()
mint egy
var x = readLine()
amit reflexből írnék?...ja pont most olvasom, hogy a readLine() nem egyszerű String-et ad vissza, hanem optional-t. Akkor ezért írt a fordító valami unwrap problémát.
fura az
if let x = readLine() {
valami
}
szerkezet is. Mármint hogy honnan kap boolean értéket. Esetleg az "if let" itt egy összetartozó speciális statement?Persze még nagyon az elején vagyok, de a Swift mintha sok dolog máshogy működne.
-
dodopek
addikt
Sziasztok,
Segítséget kérnék.
Van egy barátom, szülinapjára pólóra szeretnék nyomtattatni. Az igazi szerelme a linuxra programozás, és szükségem lenne egy 3 soros kódra, amit a pólóra tehetnék neki. Nagyjából annyi kellene, hogy program indul, nagy betűméret, nyomtatás "bármi szöveg" program vége. Én tök hülye vagyok ehhez, szóval ha baromságot mondtam, nézzétek el. Írna nekem valaki egy ilyet?
Köszönöm! -
samujózsi
senior tag
Ha kisebb-nagyobb kódokat szeretnék megosztani a nagyérdeművel, itt a fórumon vagy a logout blogon, hová érdemes feltenni?
(*git*? Pastebin? Valami egyéb?) -
Tigerclaw
nagyúr
A Swift-hez van hasonlóan gazdag online dokumentáció, mint amilyen az MS esetén .net -hez?
-
Új hozzászólás Aktív témák
● olvasd el a téma összefoglalót!
- Kormányok / autós szimulátorok topikja
- Fortnite - Battle Royale & Save the World (PC, XO, PS4, Switch, Mobil)
- Többszörösére növeli az üzemidőt az LG 1 Hz-es LCD panelje
- Házimozi belépő szinten
- Kerékpárosok, bringások ide!
- Crimson Desert
- Víz- gáz- és fűtésszerelés
- Teljes verziós játékok letöltése ingyen
- Apple iPhone 17 Pro Max – fennsík
- Call of Duty: Black Ops 7
- További aktív témák...
- BESZÁMÍTÁS! GIGABYTE B650E R9 7900X 64GB DDR5 1TB SSD RTX 5080 16GB NZXT H9 Flow White Corsair 850W
- BESZÁMÍTÁS! MSI X570 R5 5600X 32GB DDR4 512GB SSD RX 6800 16GB Kolink Unity Lateral ARG 750W
- BESZÁMÍTÁS! MSI B650 R5 9600X 32GB DDR5 1TB SSD RX 9070XT 16GB Lian Li LANCOOL II Mesh C RGB 750W
- BESZÁMÍTÁS! Gigabyte B450M R5 3600 16GB DDR4 512GB SSD GTX 1070 8GB Zalman S3 Chieftec 700W
- BESZÁMÍTÁS! Gigabyte B360M i5 8400 16GB DDR4 512GB SSD RTX 2070 8GB RAMPAGE Shiva Adata 600W
- AKCIÓ! Nintendo Switch OLED 64GB játékkonzol garanciával hibátlan működéssel
- GAMING PC! i7-13700F / RX 9070 XT / 32GB DDR5 / B760 / 1TB NVMe / 850w Gold! BeszámítOK
- KERESEK: Poly Voyager 4320 M UC USB-C 218478-02M Part number: 77Z30AA
- Dell Precision 3561 Core i9 11950H, 16-32GB RAM, 512GB SSD, jó akku, számla, 6 hó gar
- GAMER PC! Intel Ultra 7 265 / RTX 5070 / 32GB 6000MHz / 1TB Gen4 / 750w Gold!
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest


Ezért van az, hogy magasabb hegységben hosszabb ideig kell főzni, sőt van amit nem is lehet ott megfőzni kukta nélkül. Ja amúgy a kukta meg a másik véglet. Abban rövidebb ideig kell főzni, mert jóval 100C fok felett forr benne a víz.
Nekem egyszer volt vele közelebbi kapcsolatom, majdnem fejlesztenem is kellett benne, de végül megoldottam Ionicban.

