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;
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
Yorum Gönder