Temeller - LuaLS

LuaLS Nedir?

lua-language-server, yorum ek açıklamaları (comment annotations) kullanarak tür denetimine (type checking) olanak tanır. Bu, Dil Sunucusu Protokolünü (Language Server Protocol) destekleyen çoğu düzenleyicide kullanılabilir, ancak bu mini rehberde Visual Studio Code için nasıl kurulacağı gösterilmektedir. Diğer rehberlere buradan ulaşabilirsiniz.

Tür denetimi, tür uyuşmazlıkları nedeniyle oluşabilecek hataları meydana gelmeden önce bulmak için çok yararlı olabilir ve genellikle erken hata tespiti sağlar. Daha önce hiç expected ? got nil hatasıyla karşılaştınız mı? O zaman bu tam size göre!

Kurulum

Lua Eklenti Yöneticisini (Lua Addon Manager) açmaya çalışırken bir hata penceresiyle karşılaşırsanız, büyük olasılıkla sisteminizde git eksiktir. Eklenti Yöneticisi ile ilgili başka sorunlar yaşarsanız, sorun giderme bölümüne bakın.

Yapılandırma / Kullanıcı Ayarları

Her şey yüklendikten sonra, VS Code'da bir metin dosyası açın ve sağ alt köşeden dil modunu Lua olarak değiştirin. Alternatif olarak ctrl + k m klavye kısayolunu kullanın.

Ardından, ctrl + ⇧ shift + p ile komut paletini açın. Open User Settings (JSON) aratın ve enter'a basın. Bu, Lua ayarlarını eklemek için ayarlarınızı bir JSON dosyası olarak açacaktır. Sonrasında bu varsayılan ayarları eklemelisiniz.

"Lua.diagnostics.disable": [ "undefined-global" ], "Lua.runtime.special": { "include": "require", "IncludeCS": "require" }, "Lua.runtime.nonstandardSymbol": [ "continue", "&&", "||", "!=", "!", "//" ]
Özellikle yeni başlarken veya türleri mevcut bir kod tabanına entegre ederken daha fazla tanıyı devre dışı bırakmak cazip gelebilir, ancak bu durum genellikle her şey düzgün bir şekilde türlendirildiğinde yararlı işlevselliği kaçırmanıza yol açar.

Her zaman türlerini yüklemek istediğiniz bir oyun modunuz (gamemode) / eklenti setiniz varsa, bunları Lua.workspace.libary'ye ekleyebilirsiniz. Bu, tür tanımlarını yeniden tanımlamaya / `require` etmeye gerek kalmadan diğer eklentilerde kullanabileceğiniz anlamına gelir.

"Lua.workspace.library": [ "C:\Path\To\BaseDirectory" ]

Temel Kullanım Örnekleri

İşte LuaLS'in farklı kullanım alanlarını gösteren bazı kısa örnekler.

Tür Denetimi

Burada, bir fonksiyonun iki farklı türde anahtar-değer tablosu döndürdüğü bir örneğimiz var. Daha sonra tablo üzerinde döngü kurup bu değerleri başka bir fonksiyona iletiyoruz. Fark etmiş olabilirsiniz veya olmayabilirsiniz, PrintHealth için anahtar ve değer argümanlarının yerleri değiştirilmiştir. Tablo ve fonksiyon argümanları için türleri belirttiğimizden, LuaLS bizi tür uyuşmazlıkları konusunda uyarıyor! Elbette bu örnek biraz bariz, ancak fonksiyon dönüşlerinin başka bir dosyadan geldiği durumlarda bu hayat kurtarıcı olabilir.

type-checking.png

Otomatik Tamamlama

Burada Player üzerinde, bir Varlık (Entity) tablosu döndüren yeni bir GetOwnedEntities fonksiyonu tanımlıyoruz. (Entity[], table<integer, Entity>'e eşdeğerdir; burada türün sıralı bir tablosudur). Bu yeni fonksiyon üzerindeki tür belgeleri sayesinde, döndürülen tablo üzerinde döngü kurduğumuzda Entity içindeki tüm fonksiyonların tam bir otomatik tamamlamasını görebiliriz.

auto-completion.png

Jenerik (Generic)

Jenerikler (Generics), kodun yeniden kullanılmasına izin verir ve bir tür için bir nevi "yer tutucu" görevi görürler. Bir türün "yakalanmasına" ve yeniden kullanılmasına olanak tanırlar; bu örnekte sadece değeri, türüyle birlikte neyse onu geri döndürüyoruz.

image.png

Sorun Giderme

Bazen Lua Eklenti Yöneticisi (Lua Addon Manager), Gmod Snippets'i yükleyemeyebilir. Bu olursa, bunun yerine:

  • luttje/glua-api-snippets/releases adresinden en son *.lua.zip dosyasını indirin.
  • Sıkıştırılmış dosyadan çıkarılan dizin yolunu VS Kullanıcı Ayarlarınızdaki Lua.workspace.libary'ye ekleyin.

Tüm sunucular · GmodTR Launcher · Rehber · GMod Wiki · GmodTR nedir? · Sunucu ekle · Discord