usings from odin in the docs as idea to stole maybe
This commit is contained in:
parent
a40b035d64
commit
5c6c62c12a
43
BASED.md
43
BASED.md
@ -613,7 +613,7 @@ Ez jó kérdés, hogy legyen-e. A rust-os match statement-nek azért vannak elő
|
|||||||
|
|
||||||
^^Szerintem a "checked switch" jellegű dolgok első körben elegek lesznek? Sőt a checked legyen szerintem a default!
|
^^Szerintem a "checked switch" jellegű dolgok első körben elegek lesznek? Sőt a checked legyen szerintem a default!
|
||||||
|
|
||||||
## Öröklődés, polimorfizmus
|
## Öröklődés, polimorfizmus, like-olás generic
|
||||||
|
|
||||||
- Nem lesz altípusos polimorfizmus.
|
- Nem lesz altípusos polimorfizmus.
|
||||||
- Lesz generic / template jellegű fordítási idejű polimorfizmus
|
- Lesz generic / template jellegű fordítási idejű polimorfizmus
|
||||||
@ -625,6 +625,8 @@ Lennének ugye a hagyományos típusok, olyankor ezek "konkrétumot" jelentenek.
|
|||||||
nem valami dolog ami az "int-ből öröklődik". De ez igaz a konkrétság a nyelvben ugye így öröklődés hiányában igaz lenne a saját
|
nem valami dolog ami az "int-ből öröklődik". De ez igaz a konkrétság a nyelvben ugye így öröklődés hiányában igaz lenne a saját
|
||||||
handle típusokra is (a struct-ok okosabb neve itt a handle).
|
handle típusokra is (a struct-ok okosabb neve itt a handle).
|
||||||
|
|
||||||
|
### Like-olásos generic polimorfizmus
|
||||||
|
|
||||||
Ellenben megadhatjuk egy típusnak, hogy egy-egy mezője (annak típusa alapján) "legyen a mi típusunk más típusú 'nézete' ott"!
|
Ellenben megadhatjuk egy típusnak, hogy egy-egy mezője (annak típusa alapján) "legyen a mi típusunk más típusú 'nézete' ott"!
|
||||||
|
|
||||||
Például:
|
Például:
|
||||||
@ -678,6 +680,41 @@ Még fontos azt is látni, hogy ilyen "int-like" vagy "MyHandleType-like" típus
|
|||||||
pedig csak definícióban / implementációnál! Tehát NEM lehet csinálni int-like arr[]; tömböt - csak mondjuk A arr[]; tömböt, de ez
|
pedig csak definícióban / implementációnál! Tehát NEM lehet csinálni int-like arr[]; tömböt - csak mondjuk A arr[]; tömböt, de ez
|
||||||
utóbbit viszont át lehet adni paraméterként a sort(..) függvénynek így!
|
utóbbit viszont át lehet adni paraméterként a sort(..) függvénynek így!
|
||||||
|
|
||||||
|
### Odin-szerű "using"-ok
|
||||||
|
|
||||||
|
Lásd:
|
||||||
|
|
||||||
|
https://odin-lang.org/docs/overview/#using-statement-with-structs
|
||||||
|
|
||||||
|
Ez szerintem hasonló a like-oláshoz - érdemes elgondolkozni, hogy legyen-e(odin kód alább):
|
||||||
|
|
||||||
|
Vector3 :: struct{x, y, z: f32}
|
||||||
|
Entity :: struct {
|
||||||
|
position: Vector3,
|
||||||
|
orientation: quaternion128,
|
||||||
|
}
|
||||||
|
|
||||||
|
foo :: proc(using entity: ^Entity) {
|
||||||
|
fmt.println(position.x, position.y, position.z)
|
||||||
|
}
|
||||||
|
|
||||||
|
foo :: proc(entity: ^Entity) {
|
||||||
|
using entity.position
|
||||||
|
fmt.println(x, y, z)
|
||||||
|
}
|
||||||
|
|
||||||
|
A like-olás másik formájával analóg dolog meg ez a rész(odin kód alább):
|
||||||
|
|
||||||
|
Entity :: struct {
|
||||||
|
using position: Vector3,
|
||||||
|
orientation: quaternion128,
|
||||||
|
}
|
||||||
|
foo :: proc(entity: ^Entity) {
|
||||||
|
fmt.println(entity.x, entity.y, entity.z)
|
||||||
|
}
|
||||||
|
|
||||||
|
Igazából szerintem lehet mindkettő, nagyon jó poszt-OOP tool mindkettő.
|
||||||
|
|
||||||
## Tagged union
|
## Tagged union
|
||||||
|
|
||||||
tagged union AB {
|
tagged union AB {
|
||||||
@ -809,7 +846,7 @@ FONTOS: Talán érdemes volna kötelezővé tenni, hogy minden "esetnek" legyen
|
|||||||
leírt függvény esetén neked kelljen magadnak switch-case-elned a történetet (és az fusson le). Ezzel egy adott függvénynek vagy
|
leírt függvény esetén neked kelljen magadnak switch-case-elned a történetet (és az fusson le). Ezzel egy adott függvénynek vagy
|
||||||
minden esetre kell legyen definíciója, vagy az únió eseteitől függetlenül álljon ott - de runtime error-t nem szeretnék!
|
minden esetre kell legyen definíciója, vagy az únió eseteitől függetlenül álljon ott - de runtime error-t nem szeretnék!
|
||||||
|
|
||||||
## Interfészek
|
### Interfészek
|
||||||
|
|
||||||
Zsolt vetette fel, hogy neki azért öröm töltené el a szívét, ha lehetne egy "kicsit OO style" azért annyiban, hogy egy tömbben tud
|
Zsolt vetette fel, hogy neki azért öröm töltené el a szívét, ha lehetne egy "kicsit OO style" azért annyiban, hogy egy tömbben tud
|
||||||
keverni különböző típusú dolgokat, amiknek közös az interfésze és kapni ilyeneket függvény paraméterként...
|
keverni különböző típusú dolgokat, amiknek közös az interfésze és kapni ilyeneket függvény paraméterként...
|
||||||
@ -832,7 +869,7 @@ Megj.: A második változat (tagged union-os megoldás) kell szerintem + lehesse
|
|||||||
ott, hogy IGameObject-like és interfész "like-olása" mindig ezt jelentené?
|
ott, hogy IGameObject-like és interfész "like-olása" mindig ezt jelentené?
|
||||||
FONTOS: Adattagnak így nem lehet "interfész" típusa, csak tagged union-os esetben ugyebár...
|
FONTOS: Adattagnak így nem lehet "interfész" típusa, csak tagged union-os esetben ugyebár...
|
||||||
|
|
||||||
## Láthatóság
|
### Láthatóság
|
||||||
|
|
||||||
TODO: Egyszeűsítendő?
|
TODO: Egyszeűsítendő?
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user