2013-06-13 15 views
5

fv=object.field olarak erişebildiğim salt okunur bir alan istiyorum, ancak döndürülen değer nesnenin diğer alanlarından hesaplanır (yani dönüş değeri fv==f(object.field2)'u karşılar)).Nesne yönelimli Matlab'da türetilmiş özellik nasıl tanımlanır

İstenen işlevsellik, Python'daki property işlev/dekoratör ile aynıdır.

properties bloğunun parametrelerini ayarlayarak bunun mümkün olduğunu belirten bir referans görüyorum, ancak Matlab OOP dökümantasyonu bulamayacağım kadar dağınık durumda.

+0

", arzu edilen özelliklerin özelliği işlevi/dekoratör aynıdır Python'da. " Python kullanmanız gerektiği gibi görünüyor. –

+0

@SlaterTyranus Keşke yapabilseydim. – Dave

cevap

4

Buna "bağımlı" özellik denir. Türetilmiş bir özelliğini kullanarak bir sınıfı hızlı bir örnek aşağıda verilmiştir: tanımlanmış Bu sınıf ile

classdef dependent_properties_example < handle  %Note: Deriving from handle is not required for this example. It's just how I always use classes. 
    properties (Dependent = true, SetAccess = private) 
     derivedProp 
    end 
    properties (SetAccess = public, GetAccess = public) 
     normalProp1 = 0; 
     normalProp2 = 0; 
    end 
    methods 
     function out = get.derivedProp(self) 
      out = self.normalProp1 + self.normalProp2; 
     end 
    end 
end 

, şimdi çalışabilir:

>> x = dependent_properties_example; 
>> x.normalProp1 = 3; 
>> x.normalProp2 = 10; 
>> x 
x = 
    dependent_properties_example handle 

    Properties: 
    derivedProp: 13 
    normalProp1: 3 
    normalProp2: 10 
+0

'Sap 'dan herhangi bir özel rol oynamaktan mı geliyor? 'Get.name' sözdizimi, yalnızca bir sınıfın "yöntemleri" bloğu içinde izinli midir? – Dave

+0

Hayır. Her zaman sınıfları nasıl kullanırım. Verilen örnek her iki şekilde de çalışır. – Pursuit

+0

"Tutamaç" sınıfının alt sınıflaması, bunu bir "değer" sınıfından farklı kılar. 'Sap'tan alt sınıflama ', diğer dillerde gördüğünüz gibi olan nesne davranışını verir. [MATLAB belgelerinin ikisi arasındaki farkla ilgili belgeler] (http://www.mathworks.com/help/matlab/matlab_oop/comparing-handle-and-value-classes.html) oldukça yararlıdır. –

2

Sen mülkiyet erişim yöntemlerini kullanabilirsiniz: http://www.mathworks.co.uk/help/matlab/matlab_oop/property-access-methods.html

get/set işlevleri tanımlamak için - olsun fonksiyonu diğer üyelerinin hesaplanan değerleri döndürmek için izin vermelidir. Yukarıdaki linkte "Bağımlı Özelliklerle Set Yöntemlerini Kullanmak İçin" bölümü, bunun bir örneğini vermektedir.

İlgili konular