[]

Pointer hokkabazlığı

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  (04.04.23 17:41:35) 
bu soruyu tekrar okuyacagim fakst yakaladigim birkac keyword ile function pointer aranan şey gibi geldi bana.


  • sparkle kiddle  (04.04.23 18:37:23) 
@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  (04.04.23 23:43:02) 
1
buraya yazılanların hakları Sir Anthony Hopkins'e aittir.
yazan eden compumaster, ilgilenen eden fader
modere edenler angelus, Artibir, aychovsky, baba jo, basond, compumaster, deckard, duyulmasi gerektigi kadar, fader, fraise, groove salad, kahvegibi, kaymaktutmayansicaksut, kibritsuyu, monstro, pandispanya, robin, ron dennis
bu sitede yazılanların hiçbiri doğru değildir. site içeriği küçükler için sakıncalı olabilir. yazılardan yazarları sorumludur. kaynak göstermeden alıntılanamaz. devlet tarafından atanmış bir kurumun internet üzerinde kimin hangi bilgiye ulaşıp ulaşamayacağına karar vermesi insan haklarına aykırıdır. web siteleri kullanıcıların istekleri doğrultusunda bağlandıkları yerlerdir. kullanıcılar isterlerse bir web sitesine bağlanmayabilirler. bu güçleri ve imkanları mevcuttur. bir kullanıcı bir siteye bağlanmak istiyorsa bu onun tercihi ve hakkıdır. bağlanmak istemiyorsa bu yine onun tercihi ve hakkıdır. halkın kendisine hizmet etmesi için görevlendirdiği kurumlar hadlerini aşıp halka neye ulaşıp ulaşmayacağını bilmeyen cahil cühela muamelesi edemezler. ebeveynlerin çocuklarını sakıncalı içeriklerden koruması için çok sayıda bedava ve ücretli yazılım mevcuttur. bu yazılımlar bir web tarayıcısını kullanmaktan daha karmaşık teknik bilgi gerektirmemektedir. devletin milletini küçük düşürmesi ve ebleh yerine koyması yasaktır. Skimlinks ile linkler üzerinden yönlendirme payı alınmaktadır.