Handle class property inheriting value methods
1 view (last 30 days)
Show older comments
Is there any way to create a handle class with the functionality of a value class, such that calling builtin methods of value classes would operate on a given Property? For example, let's say you have the class DataArray
classdef DataArray < handle
properties
Value
Unit
end
methods
function obj = DataArray(Value,Unit)
obj.Value = Value;
obj.Unit = Unit;
end
end
end
It would be very convenient to tell Matlab that any value methods (e.g. max, min, std...) should be applied to obj.Value without needing to explicitly define each method. Is there any way to accomplish this?
0 Comments
Answers (1)
BhaTTa
on 10 Jun 2024
For a few methods, you could manually implement the delegation by defining methods in your DataArray class that call the built-in functions on the Value property. Here's an example for max, min, and std:
classdef DataArray < handle
properties
Value
Unit
end
methods
function obj = DataArray(Value, Unit)
obj.Value = Value;
obj.Unit = Unit;
end
% Delegating max
function result = max(obj)
result = max(obj.Value);
end
% Delegating min
function result = min(obj)
result = min(obj.Value);
end
% Delegating std
function result = std(obj)
result = std(obj.Value);
end
end
end
you can call max on an instance of DataArray, like so:
dataArray = DataArray([1, 2, 3; 4, 5, 6], 'units');
maxValue = max(dataArray);
0 Comments
See Also
Categories
Find more on Data Type Identification in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!