Чиста разминка для ума. Совершенно программистская задача.
для определенности, пусть будет
https://github.com/mazzy-ax/SysCustVend
Хочу сделать некий метод, который принимает либо map, либо таблицу.
В этот метод хочу передать инициализированный или неинициализированный map.
что-то типа такого
X++:
str TheUltimateQuestionOfLifeTheUniverseAndEverything(anytype mapOrTable)
{
if( /* Deep Thought question: mapOrTable is CustVendTable */ )
return 'nirvana';
return '42';
}
static void main(Arga args)
{
CustTrans ctr;
VendTrans vtr;
CustVendTrans mapTr;
CustVendTrans mapTrInit = vtr;
CustTable ct;
VendTable vt;
CustVendTable mapT;
CustVendTable mapTinit = ct;
debug::assert('42' == TheUltimateQuestionOfLifeTheUniverseAndEverything (ctr));
debug::assert('42' == TheUltimateQuestionOfLifeTheUniverseAndEverything (vtr));
debug::assert('42' == TheUltimateQuestionOfLifeTheUniverseAndEverything (maptr));
debug::assert('42' == TheUltimateQuestionOfLifeTheUniverseAndEverything (maptrInit));
debug::assert('42' == TheUltimateQuestionOfLifeTheUniverseAndEverything (ct));
debug::assert('42' == TheUltimateQuestionOfLifeTheUniverseAndEverything (vt));
debug::assert('nirvana' == TheUltimateQuestionOfLifeTheUniverseAndEverything (mapTinit));
debug::assert('nirvana' == TheUltimateQuestionOfLifeTheUniverseAndEverything (mapT));
}
что надо написать в условии для Величайшего компьютера, чтобы метод попадал в нирвану, когда ему передается map CustVendTable, и отвечал бы 42 для всех остальных аргументов?
какие минимальные действия нужно сделать в условии?
какой тип у аргумента метода будет достаточен? все-таки anytype - это как-то уж очень.