Confer the following code:
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
Is there a way to call a static method of the same class (inside a static) method without having to write the class name? Something like “self.getPayout(…)” – in case the class turns out to get to 500 lines and I want to rename it.
As far as I can tell, “no” with a “but”. In general, you can only specify the static method with the class name. However, you can fake your way around the restriction since MATLAB has feval:
Here, class(self) and mfilename both evaluate to ‘testStatic’, so the functions above end up evaluating ‘testStatic.getPi’.
Or, alteratively, you can write a non-static method, self.callStatic; then always use that. Inside that, just call testStatic.getPi. Then you’ll only need to change that one line.