matlabda static benzeri bir veri tipi: 'persistent'

KOD:
function total = accumulate( n )
persistent summa;
if isempty(summa)
    summa=n;
else
    summa=summa+n;
end
total=summa;
end

Birkaç deneme:
>> accumulate(5)

ans =

     5

>> accumulate(5)

ans =

    10

>> accumulate(5)

ans =

    15

>> accumulate(5)

ans =


    20

Bu fonksiyonda görüldüğü üzere summa adlı değişken fonksiyon bittiğinde silinmiyor. pythonda static veri tipini hep aramıştım. onun yerine global de aynı işi görebilir. yalnız thread işin içine girince global pekte işe yaramıyor çünkü bir iş parçası sürekli veri üretirken diğer iş parçalarına bağlı bir veri göndermek istese iki iş parçasının hızları aynı değildir ve veri kaybına sebep olabilir.

Ayrıca mlock clear çalıştığında fonksiyonun silinmesini önler. kullanımı: function ...=testfunc(...) mlock (function body) end;

Yorumlar

Popüler Yayınlar