Elimde parametre olarak pointer alan bi fonksiyon var. Şöyle bişey:

func myFunc(var *type)

Bende bu fonksiyonlardan milyon tane var. Şimdi ben her zaman dışarıdan gelen "var" değişkenini kullanmak istemiyorum, bazı fonksiyonlarda aynı tipten yeni bir obje kullanmak istiyorum.

Fonksiyonun ilk satırında

var = new(&type) diyip yeni bi obje yaratabilirim. Ama bu durumda bu değişken bir pointer olduğu için, değişkenin değeri değişecek ve bu da diğer fonksiyonlara etki edecek. Bunu istemiyorum.

var2 = new(&type) dersem de fonksiyonların içinde "var" olan her yeri "var2" olarak değiştirmem gerekecek, bunu da istemiyorum çünkü çok iş.

Aklıma gelen çözüm: fonksiyon imzasından bu "var *type" kısmını kaldırıp, her fonksiyonun ilk satırına

var = getVar()

gibi bişey koyup factory pattern'ına dönmek. Regex kullanacağım için tüm codebase'de bu değişikliği kolayca yapabilirim. getVar() içinde de, fonksiyonun çağırıldığı yere göre yeni obje yarat / eskisini tekrar kullan vs. işlerini handle edebilirim.

Ama daha güzel, daha temiz bir çözüm yöntemi aklına gelen varsa önerilere açığım.

 

Fonksiyona bazen null gonderme sansin yok mu?

lapaz

bu soruyu tekrar okuyacagim fakst yakaladigim birkac keyword ile function pointer aranan şey gibi geldi bana.

sparkle kiddle

@lapaz, evet bazen null gönderebiliyorum, ama içeride update edersem side effect olur yine.

@sparkle kiddle, factory derken kastettiğim oydu aynen. direkt "var" göndermek yerine, yerine göre uygun "var" dönen fonksiyon göndereceğim.

bugün full yattığım için uğraşamadım bununla ama bakalım yarın neler olacak :)

plutongezegendegilmi
1

mobil görünümden çık