Minimaliste Exemple:fonction de transformation égale poignées pour une autre fonction égale poignées
classdef MyClass
properties
arr
handArr
end
properties(Dependent)
rowAcc
colAcc
end
methods
function obj = MyClass(arr, handRow, handCol)
obj.arr = arr;
obj.handArr{1} = handRow;
if ~isequal(handRow, handCol)
obj.handArr{2} = handCol;
end
end
function r = get.rowAcc(obj)
r = obj.handArr{1}(obj.arr);
end
function c = get.colAcc(obj)
c = obj.handArr{end}(obj.arr);
end
end
end
Supposons maintenant que je passe des fonctions égales au constructeur, je veux l'accès de ligne et col serait également le même:
[email protected](x)@(y) y;
x=MyClass(1, f, f);
isequal(x.rowAcc, x.colAcc) //should be 1
Est-ce possible?
J'ai une bonne raison de cette exigence « fou »:
J'ai plusieurs algorithmes qui fonctionnent avec plus de 100 Mo d'entrée et prend ces deux fonctions en entrée, et quand ils sont égaux, ils peuvent être optimisés très efficacement; appeler les algorithmes dont j'ai besoin pour effectuer des transformations sur les fonctions d'entrée qui sont encapsulées dans cette classe. Je ne peux pas changer les algorithmes (pas mon code) et ils utilisent isequal
sur leurs propres fonctions à expédier.
Merci encore pour une autre excellente réponse! –