‫Merhaba ve hoş geldiniz.
‫Bu derste, dış parametre adı verilen garip bir fenomeni öğreneceğiz.
‫Bu, C++'da değeri içeri aktarmak yerine, değeri bir fonksiyondan dışarı aktarma eğiliminde olduğumuz bir parametredir.
‫Ayrıca sabit referans denilen bir şeyi ve bu iki kavramın birbiriyle nasıl
‫iç içe geçtiğini de göreceğiz.
‫Hadi içeri dalalım ve bunu çözelim.
‫Şimdi.
‫Referansların parladığı asıl yer, fonksiyonların parametreleridir, çünkü teknoloji bileşenimizde
‫bunun gibi bir kayan delta zamanı oluşturduğumuzda, yaptığımız şey orijinal kayan değerin bir kopyasını
‫almak ve bunu fonksiyona aktarmaktır.
‫Bu nedenle, bunu yapmak yerine, ona bir referans almak ve bunu içeri aktarmak isteyebiliriz.
‫Şimdi yerçekiminde print damage adında bir fonksiyon oluşturduğumuzu düşünelim.
‫Ve bu fonksiyona argüman olarak bir float hasarı iletmek istiyoruz.
‫Şimdi, bu, dediğim gibi, içeri aktardığımız her şeyin bir kopyasını oluşturacak ve onu bu değişkene kopyalayacaktır.
‫Bu parametre değişkenini print damage fonksiyonu içinde oluşturun.
‫Ve sonunda noktalı virgülle tamamlamak için burada da bir void dönüş değerine ihtiyacımız var.
‫C++'ya geçelim ve bu konuşmaya devam edelim.
‫Baskı hasarını burada oluşturalım.
‫Önüne you grab a class koyalım ve noktalı virgül yerine parantez koyalım.
‫Böylece hasar parametresi değişkenine bir kopyasını aldık ve bu güvenli çünkü hasar eşittir beş yaparsam,
‫bu değişkeni yalnızca hasarı yazdırma içinde değiştiriyorum.
‫Kendime ait bir kopyası var.
‫Kazara berbat edemem.
‫Peki ya bir kopyasını almak istemezsem?
‫Benim alternatifim bir referans almak olurdu.
‫Burada yapabileceğim şey, baskı hasarına giden bir float referansı koyabilirim
‫ve bunu C++ dosyasında da güncellemem gerekir.
‫Ve sonra referans olarak kullandığımız bu günlük mesajına sahip olabilirim, hadi gidip bunu indirelim
‫ve bunu yazdırma hasarına koyalım.
‫Şimdi hasarımızı alıyoruz ve basıyoruz.
‫Çıkışlar, hasar şu kadar, hasar bu kadar demek için günlük ifadesini günceller ve tik bileşenimizde yapabileceğimiz
‫şey hasarı yazdırmak ve hasar değişkenimizi geçmek ve sonuna noktalı virgül koymaktır ve şimdilik hasar
‫referansımızdan kurtulabiliriz, çünkü şu anda devam eden şey bir hasar float'ıdır.
‫TTIC'de oluşturulmuştur.
‫Bunun için bellek burada oluşturuldu ve işaretlendi ve sonra gidip bu baskı hasarı işlevine veriyoruz.
‫Ancak parametre bir referans olduğu için, aslında bu hasarı kopyalamıyoruz.
‫Adresini alıyoruz ve bunun yerine referansta saklıyoruz, böylece bu referansı ileride kullandığımızda,
‫aslında orijinal bellek parçasına erişiyoruz.
‫Yani bunun hasarı yazdırması için hiçbir kopyanın olması gerekmedi.
‫Şimdi bunun gerçekten yapmasını beklediğimiz şeyi yapıp yapmadığını kontrol edelim.
‫Örneğin hasar değerini beş olarak değiştirirsem ve ardından yeniden derleyip oynat düğmesine basarsam, o zaman gidip çıktı günlüğüne
‫bir göz atın.
‫Gerçekten de, hasarın beş olduğuna dair bir baskı alın.
‫Ancak elimizde bir referans olduğu için bu değeri güncelleyebileceğimizi biliyoruz.
‫Yani yapabileceğim şey, bu fonksiyon içinde diyebilirim ki, hey, hasar bu şekilde ikiye eşit
‫olmalıdır.
‫Ve eğer dikkatli olmazsam, kendi kopyama sahip olduğumu düşünürsem, bunun sorun olmadığını düşünebilirim.
‫Ancak aslında tik bileşeninde yaptığımız şey orijinal değişkeni değiştirmektir.
‫Dolayısıyla, orijinal hasar değişkenini incelemek için buraya yeni bir günlük koyarsam ve bir yüzde F koyup hasarı buraya
‫aktarırsak, canlı kodlama yapalım, bunu derleyelim ve oynat düğmesine basıp çıktı günlüğümüze bir göz
‫atalım.
‫Ve şimdi hasarın ve orijinal hasarın her ikisinin de değiştirildiğini görebilirsiniz.
‫İkisi de iki numara olarak değiştirildi ki bu hiç de iyi değil.
‫Kelime oyununu mazur görürseniz, değiştirmeyi beklemediğiniz değişkenleri değiştirerek yanlışlıkla
‫çok fazla zarar verebilirsiniz.
‫Ve işte geçmişte gördüğümüz o sabit anahtar kelimenin başka bir kullanımı geliyor.
‫Float referansımın önüne const yapıştırırsam, burada söylediğim şey, bunun değiştiremeyeceğiniz
‫bir referans olması gerektiğidir.
‫Üzerinde herhangi bir temassız işlev çağıramazsınız, ayarlayamazsınız.
‫Bu değişkenin içeriğini hiçbir şekilde değiştiremezsiniz.
‫Sadece kullanabilir, sadece okuyabilir, sadece içinde ne olduğunu görebilirsiniz.
‫Dolayısıyla, CPP'ye geri dönersek, Const'u da parametrelere koyduğumuzdan emin olmamız
‫gerekir ve devam edip derleyebiliriz ve bir derleme hatası aldığımızı ve hatanın hasarın sabit bir
‫değişken olduğu için atanamayacağını söylediğini görürsünüz.
‫Bu da bize ihtiyacımız olan korumayı sağlıyor.
‫Genel olarak konuşursak, bir değişkeni kopyasını almak istemediğimiz verimli bir şekilde aktarmaya çalışıyorsak,
‫her zaman, her zaman bir referans kullanmanın yanı sıra iletişim anahtar kelimesini de kullanacağız
‫çünkü bu, içeriği yanlışlıkla değiştirmemizi önler.
‫Bununla birlikte, bazen bu değeri değiştirmek için kullanmak isteyebilirsiniz ve örnek olarak, bir Boolean dönüş
‫değerimiz olabilir ve hasar var demek isteyebiliriz, ancak geçmişte Blueprint'te yaptığımız gibi, ikinci bir dönüş değerine
‫sahip olmak isteyebiliriz.
‫O zaman şöyle diyebiliriz: Nasıl bir zararımız var ve bu zarar nedir?
‫Bu durumda, aslında const olmayan basit bir referans, bir float referansı kullanmak mantıklıdır.
‫Hasar ve tipik olarak, bunun bir çıkış parametresi olarak bilinen bir şey olduğunu gerçekten görünür kılmak
‫için aslında buna çıkış hasarı deriz.
‫Bir şeyleri geçirmek için bir parametre değildir.
‫Bir şeyleri dışarı aktarmak için bir parametredir.
‫Şimdi, bu biraz C++'ın tuhaf bir cilvesi olabilir ve fark edilmesi zor olabilir.
‫Ancak genel olarak konuşmak gerekirse, referans olan ancak const olarak işaretlenmemiş herhangi bir parametre
‫görürseniz, birisinin bunu bir çıkış parametresi olarak kullanmayı amaçladığını varsayabilirsiniz.
‫İşte elimizdeki şey bu.
‫Hasar var.
‫Ve eğer bunu CPP'de uygulayacak olursak, o zaman you grabber sınıfını buraya koyabiliriz
‫ve parantezlerimizi buraya koyabiliriz.
‫Bir maliyet referansı belirlemeye çalıştığımız için baskı hasarındaki mutlu olmadığı
‫satırı yorumlayacağız.
‫Esasen burada yapabileceğimiz şey biraz kod yazmak, hasar olup olmadığını görmek ve ardından
‫evet, tamam çıktısını almaktır.
‫Dış hasar eşittir beş.
‫Yani verilen zarar bu ve geri döneceğiz.
‫Doğru, çünkü elimizde bir miktar hasar var ve bunu artık hasarı ele geçirmek için kene bileşenleri
‫gibi bir yerde kullanabiliriz.
‫Yani burada hasarı beş olarak ayarlamak yerine, hasarı alabilir ve hasar varsa yazdırabiliriz,
‫bu nedenle bu satırlara benzer bir şey söyleyebiliriz if hasarı varsa ve ardından hasarla doldurulmasını istediğimiz
‫değişkeni iletiriz.
‫Yani örneğin hasar ve sonra deyimimizin gövdesine sahip olabiliriz ve örneğin yalnızca görüntülenecek herhangi
‫bir hasar varsa hasarı yazdır diyebiliriz ve bu u günlüğünü tamamen kaldırabiliriz.
‫Bu, bir fonksiyondan birden fazla dönüş değeri elde etmenin bir yolu olan, const olmayan referansları çıkış parametreleri olarak
‫kullanmanın yoludur.
‫Ve tipik olarak bunu yaptığımızda, bu fonksiyonu çağırdığımızda, değişkeni yaratırız, ancak
‫ona bir başlangıç değeri vermeyiz.
‫Yani 39. satırda, temel olarak tanımlanmış bir float hasarım var, bunu hemen bir sonraki satıra aktarıyorum.
‫Bu da bir çıkış parametresi kullandığınızı gösteren başka bir işarettir.
‫Bir fonksiyona aktarmadan hemen önce ona herhangi bir değer vermemiş olmam, o fonksiyonun benim için
‫değeri koymasını beklediğim anlamına gelir.
‫Bu yüzden ilk başta bunu fark etmek zor olabilir ve biraz kafa karıştırıcı olabilir.
‫Ancak hatırlamanızı istediğim iki kural şunlar.
‫Bildirilmiş ve bir değer verilmemiş ve anında bir fonksiyona geçirilen bir değişken görürseniz, bunun bir dış parametre olup
‫olmadığını kendinize sorun.
‫Diğer kural ise, parametre olarak bir referans görüyorsanız, ancak bu referans const değilse, bu da bunun bir out parametresi
‫olduğuna dair bir ipucu olabilir.
‫Ve tabii ki eğer değişken ya da parametre out olarak adlandırılmışsa, bu o şeyin bir out parametresi olması
‫gerektiğinin göstergesidir.
‫Harika bir şey.
‫Bence bu bizi bir tarama yapabilmek için çok güzel bir şekilde hazırladı.
‫Bir sonraki derste görüşmek üzere.