# Concepts - Functions

- **İngilizce aslı:** https://wiki.facepunch.com/gmod/function
- **Çeviri tarihi:** 2025-12-03

## Fonksiyon Nedir

Fonksiyon, `function` ve `end` anahtar kelimeleri kullanılarak tanımlanan, yeniden kullanılabilir bir kod bloğudur. Fonksiyonlar, ifadeleri bir araya getirerek kod organizasyonunu ve yeniden kullanılabilirliği teşvik eder.

### Örnek

```lua
local function pow()
	print("2 * 2 işleminin sonucu " .. 2 * 2)
end

pow()
```

### Çıktı

```lua
2 * 2 işleminin sonucu 4
```

## Parametre

Lua'da parametreli fonksiyonlar, çağrıldıklarında fonksiyona değerler aktarmanıza olanak tanır ve fonksiyonun bu girdi değerlerine göre belirli eylemleri gerçekleştirmesini sağlar. Parametreler, fonksiyonda kullanılan gerçek değerler için yer tutucu görevi görür. Parametreler kullanılarak fonksiyonlar daha çok yönlü ve yeniden kullanılabilir hale gelir; farklı girdileri kabul edebilir ve sağlanan argümanlara göre farklı çıktılar üretebilirler.

### Örnek

```lua
local function pow(num)
	print("Şu işlemin sonucu: " .. num ..  " * " .. num ", sonuç: " .. num * num)
end

pow(2)
```

### Çıktı

```lua
Şu işlemin sonucu: 2 * 2, sonuç: 4
```

## self ve İki Nokta Üst Üste (:)

`self`, özel `:` sözdizimi kullanılarak tanımlanan fonksiyonlarda erişilebilen, kolaylık sağlayan özel bir değişkendir. İşte bir örnek:

```lua
local MyObject = {}
function MyObject:MyCoolFunction( secondArg ) -- İsimdeki iki nokta üst üste (:) işaretine dikkat edin!
	print( self, secondArg )
end
```

Bir fonksiyon adında `:` ile tanımlandığında, yani bir nesnenin parçası olduğunda, fonksiyonun ilk argümanı `self` olur. Bu genellikle nesnenin kendisi anlamına gelir.

Bu, işlevsel olarak şununla aynıdır:

```lua
local MyObject = {}
function MyObject.MyCoolFunction( self, secondArg )
	print( self, secondArg )
end
```

veya bununla:

```lua
local MyObject = {}
-- Bir değişkene fonksiyon ata
MyObject.MyCoolFunction = function( self, secondArg )
	print( self, secondArg )
end
```

İkinci örneğin nokta `.` sembolü kullandığına dikkat edin.

Aynı durum fonksiyonları **çağırırken** de geçerlidir:

```lua
-- Fonksiyon çağrısındaki iki nokta üst üste (:) işaretine dikkat edin
MyObject:MyCoolFunction( "test" )

-- Nokta (.) işaretine dikkat edin
MyObject.MyCoolFunction( MyObject, "test" )
```

İki fonksiyon çağrısı da aynıdır, ancak biri kolaylık sağlamak için daha kısadır.

## Return

`return` ifadesi, bir fonksiyonun üretmesi veya çıktı vermesi gereken değeri/değerleri belirtmek için kullanılır. Bir fonksiyon `return` ifadesiyle karşılaştığında, anında çalışmayı durdurur ve belirtilen değeri/değerleri çağırana geri döndürür. Bu, fonksiyonların kendilerini çağıran koda sonuçlar sağlamasına olanak tanır ve fonksiyonun çıktısının programın diğer bölümlerinde kullanılmasını mümkün kılar.

### Örnek

```lua
local function pow(num)
	return num * num
end

local number = pow(2)

print("2 * 2 işleminin sonucu " .. number)
```

### Çıktı

```lua
2 * 2 işleminin sonucu 4
```

`return` ifadesi, herhangi bir değer döndürmeden fonksiyonun yürütülmesini sonlandırarak fonksiyondan çıkmak için değersiz olarak da kullanılabilir. Bu, çağırana bir çıktı sağlamadan fonksiyonu belirli bir noktada durdurmak istediğinizde kullanışlı olabilir.

### Örnek

```lua
local function SetHealth(ply, health)
	if not IsValid(ply) or not ply:Alive() then return end
	ply:SetHealth(health)
	print("Şu oyuncunun canı ayarlandı: " .. ply:Nick() .. ", yeni can: " .. health)
end

SetHealth(Entity(1), 100)
Entity(1):Kill()
SetHealth(Entity(1), 100)
```

### Çıktı

```lua
Şu oyuncunun canı ayarlandı: User, yeni can: 100

-- Oyuncu ölü olduğu için çıktı yok
```

## Bir Değişkene Atama

Lua'da, parantez kullanmadan fonksiyon adını kullanarak bir fonksiyonu bir değişkene atayabilirsiniz.

### Örnek

```lua
local pow = function(num)
	return num * num
end
```

Burada, `pow` değişkeni artık fonksiyonu tutar ve `pow()` kullanarak bu fonksiyonu çağırabilirsiniz. Bu teknik, değişkenlerde isimsiz (anonymous) fonksiyonlar oluşturmanıza ve saklamanıza olanak tanır, bu da Lua kodunuzda fonksiyonları başka yerlere aktarmayı kolaylaştırır. Artık değişkeni [concommand.Add](https://gmod.tr/wiki/concommand.Add) gibi diğer fonksiyonlara parametre olarak geçirebilirsiniz.

```lua
local pow = function(ply, cmd, args)
	local num = args[1]
	return num * num
end

concommand.Add("pow" , pow)
```

- [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/function
