赋予下面的代码:
classdef highLowGame
methods(Static)
function [wonAmount, noGuesses] = run(gambledAmount)
noGuesses = 'something';
wonAmount = highLowGame.getPayout(gambledAmount, noGuesses); % <---
end
function wonAmount = getPayout(gambledAmount, noGuesses)
wonAmount = 'something';
end
end
end
有没有一种方法调用同一类方法(静态内)的静态方法,而无需编写的类名? 像“self.getPayout(...)” - 如果该类原来去500线,我想重新命名它。
据我所知,“无”与“但是”。 在一般情况下,你只能与指定的类名的静态方法。 但是,您可以假冒你的身边,因为MATLAB的限制方式有feval:
classdef testStatic
methods (Static)
function p = getPi() %this is a static method
p = 3.14;
end
end
methods
function self = testStatic()
testStatic.getPi %these are all equivalent
feval(sprintf('%s.getPi',class(self)))
feval(sprintf('%s.getPi',mfilename('class')))
end
end
end
在此,类(个体)和mfilename都评价为“testStatic”,所以上述端向上计算“testStatic.getPi”的功能。
或者,alteratively,你可以写一个非静态方法,self.callStatic; 然后一直使用它。 里面那个,只需调用testStatic.getPi。 那么你只需要改变一行。
不回答你的问题直接,但值得一提的是,你还可以把“本地功能”你结束后classdef
在块class.m
文件,这些行为类似于私有静态方法,但你并不需要调用他们使用类名。 即
% myclass.m
classdef myclass
methods ( Static )
function x = foo()
x = iMyFoo();
end
end
end
function x = iMyFoo()
x = rand();
end
% end of myclass.m