# Kavramlar - Userdata

- **İngilizce aslı:** https://wiki.facepunch.com/gmod/userdata
- **Çeviri tarihi:** 2025-09-08

## Userdata

Userdata, öncelikli olarak **Lua C API**'sinde kullanılan, C verisine -örneğin nesneler gibi- işaret eden bir türdür
ve iki çeşidi vardır: tam (full) & hafif (light).

### Tam Userdata (Full Userdata)

İnsanlar `userdata`'dan bahsettiğinde, genellikle `full userdata`'yı kastederler.

Çoğu zaman, paneller (panels) ve varlıklar (entities) gibi tablolara (tables) benzer şekilde işlev gören
tam userdata nesneleriyle karşılaşırsınız.

[newproxy](https://gmod.tr/wiki/Global.newproxy) ile boş userdata oluşturabilirsiniz.

#### Detaylar

Tam userdata'lar metatable'lara sahip olabilir, ancak bunlar dizinlenemez (indexed)
ve table kütüphanesindeki fonksiyonlarla çalışmazlar.

Varlıklar (entities) gibi türlere rastgele değerler atanabilir, çünkü
varlığın userdata metatable'ı, varlığın dahili Lua tablosunda değerleri ayarlamak için `__newindex`
metametodunu kullanır.

Buna bağlı olarak, `__index` metametodu da anahtar için
varlığın dahili Lua tablosunu kontrol eder ve değerini döndürür.

Varlıklar gibi türlerin sanki birer tabloymuş gibi
dizinlenebilmesi bu fonksiyonlar sayesindedir.

Tam userdata'lar çöp toplayıcı (garbage collected) tarafından temizlenir ve Lua, userdata'nın kendisini bir argüman olarak geçirerek userdata'nın `__gc`
metametodunu çağırır ve böylece tam userdata'ya toplanmak üzere olduğunu bildirir.

Bu, C tarafında userdata tarafından kullanılan kaynakların serbest bırakılmasına olanak tanır;
örneğin bir nesneyi silmek veya bir dosya tanıtıcısını (file handle) serbest bırakmak gibi.

### Hafif Userdata (Light Userdata)

Hafif userdata, Lua'da bir işaretçiyi (pointer) bir değer olarak temsil eder.

#### Detaylar

Tam userdata'nın aksine, hafif userdata çöp toplayıcı tarafından temizlenmez,
bireysel bir metatable'ı yoktur ve yalnızca tuttukları işaretçiler eşit olduğunda
diğer hafif userdata'lara eşit olur.

Bu, doğası gereği Garry's Mod'da kullanılmaz.

Daha fazla bilgi için [Programming in Lua dokümantasyonuna](https://www.lua.org/pil/28.5.html) bakınız.

- [GMod Wiki ana sayfası](https://gmod.tr/wiki)

---

[Tüm sunucular](https://gmod.tr/) · [GmodTR Launcher](https://gmod.tr/launcher) · [Rehber](https://gmod.tr/rehber) · [GMod Wiki](https://gmod.tr/wiki) · [GmodTR nedir?](https://gmod.tr/hakkinda) · [Sunucu ekle](https://gmod.tr/sunucu-ekle) · [Discord](https://discord.gg/gmodtr)

Kaynak: https://gmod.tr/wiki/userdata
