Conversion from an old to a new version of a class with different property names

34 ビュー (過去 30 日間)
Dani A
Dani A 2025 年 8 月 26 日 19:55
編集済み: Dani A 2025 年 8 月 26 日 20:26
Let's say that I have a custom class testClass
classdef testClass
properties
input1
computationResultPropertyNameThatsTooLong
end
methods
function tc = testClass(input1)
tc.input1 = input1;
expensiveFunction = @sqrt;
tc.computationResultPropertyNameThatsTooLong = expensiveFunction(input1);
end
end
end
I'm offloading the computation of the testClass objects (of which I have tens of thousands) to another machine. Is there any way to make it so that I can alter the property names of testClass in a "clean " way (let's say I change computationResultPropertyNameThatsTooLong to computationResultBetterName) such that I can load in the data from the *.mat file as valid testClass objects? I can of course run the computations again, but I would prefer not to.

採用された回答

Matt J
Matt J 2025 年 8 月 26 日 20:08
編集済み: Matt J 2025 年 8 月 26 日 20:11
One way is with a Dependent property. This makes it so you can reference the same property using tc.shortname.
classdef testClass
properties
input1
end
properties (Dependent)
shortname
end
properties (SetAccess = immutable, Hidden)
computationResultPropertyNameThatsTooLong
end
methods
function tc = testClass(input1)
tc.input1 = input1;
tc.computationResultPropertyNameThatsTooLong = expensiveFunction(input1);
end
function val=get.shortname(tc)
val=tc.computationResultPropertyNameThatsTooLong;
end
end
end
  1 件のコメント
Dani A
Dani A 2025 年 8 月 26 日 20:25
編集済み: Dani A 2025 年 8 月 26 日 20:26
wow ok so I think this works ! setting it as a dependent property and the old property as hidden and immutable is clever. I'm testing it with my real data - i'll accept your answer later this evening when I've confirmed that it works

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeClass Introspection and Metadata についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by