Skip to content

Commit

Permalink
referencja a nie odwołanie
Browse files Browse the repository at this point in the history
  • Loading branch information
rofrol committed May 23, 2024
1 parent 4b754d1 commit a7d4c2b
Show file tree
Hide file tree
Showing 2 changed files with 2 additions and 2 deletions.
2 changes: 1 addition & 1 deletion DICTIONARY_PL.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@
- to invalid - unieważnić
- scope - zakres
- `user` outlives its scope - `user` przeżyje (żyje dłużej niż) swój zakres
- reference - referencja
- reference - referencja (odniesienie, odwołanie)
- child allocator - alokator potomny
- writer - writer (pisarz dziwnie brzmi)
- ArrayList - ArrayList
Expand Down
2 changes: 1 addition & 1 deletion src/04-pointers.md
Original file line number Diff line number Diff line change
Expand Up @@ -200,7 +200,7 @@ Początkowo wybrałem funkcję, ponieważ jest ona jawna, a tym samym łatwiejsz

Więcej niż sugerowałem, że domyślnie Zig będzie przekazywał kopię wartości (zwaną "przekazywaniem przez wartość"). Wkrótce zobaczymy, że rzeczywistość jest nieco bardziej subtelna (podpowiedź: co ze złożonymi wartościami z zagnieżdżonymi obiektami?).

Nawet trzymając się prostych typów, prawda jest taka, że Zig może przekazywać parametry w dowolny sposób, o ile może zagwarantować, że intencja kodu zostanie zachowana. W naszym oryginalnym `levelUp`, gdzie parametrem był `User`, Zig mógł przekazać kopię użytkownika lub odwołanie do `main.user`, o ile mógł zagwarantować, że funkcja go nie zmutuje. (Wiem, że ostatecznie chcieliśmy go zmutować, ale tworząc typ `User`, mówiliśmy kompilatorowi, że tego nie chcemy).
Nawet trzymając się prostych typów, prawda jest taka, że Zig może przekazywać parametry w dowolny sposób, o ile może zagwarantować, że intencja kodu zostanie zachowana. W naszym oryginalnym `levelUp`, gdzie parametrem był `User`, Zig mógł przekazać kopię użytkownika lub referencję do `main.user`, o ile mógł zagwarantować, że funkcja go nie zmutuje. (Wiem, że ostatecznie chcieliśmy go zmutować, ale tworząc typ `User`, mówiliśmy kompilatorowi, że tego nie chcemy).

Ta swoboda pozwala Zigowi na użycie najbardziej optymalnej strategii opartej na typie parametru. Małe typy, takie jak `User`, mogą być tanio przekazywane przez wartość (tj. kopiowane). Większe typy mogą być tańsze do przekazania przez referencję. Zig może stosować dowolne podejście, o ile intencje kodu zostaną zachowane. Do pewnego stopnia jest to możliwe dzięki stałym parametrom funkcji.

Expand Down

0 comments on commit a7d4c2b

Please sign in to comment.