Информация об изменениях

Сообщение Re[4]: Слабое связывание в процедурном языке от 29.07.2024 6:47

Изменено 29.07.2024 6:53 zelenprog

Re[4]: Слабое связывание в процедурном языке
S>Тогда ваш единственный выход — switch.
S>То есть примерно так:

S>
S>int BinaryOp(int a, int b, int functionNo) // весь полиморфизм - здесь
S>{
S>  switch(functionNo)
S>  {
S>    case 0: return Add(a, b);
S>    case 1: return Mul(a, b);
S>    case 2: return Sub(a, b);
S>    default: throw new Exception("Unknown function no: " + functionNo.ToString());
S>  }
S>}

S>int Foo(int[] data, int initValue, int functionNo)
S>{
S>  var acc = initValue;
S>  for(var item in data)
S>    acc = BinaryOp(acc, item);
S>  return acc;
S>}
S>


Понял, спасибо.
Очень похожие решения есть выше (про диспетчер, хотя суть немного отличается) и ниже (call_by_name).
Re[4]: Слабое связывание в процедурном языке
S>Тогда ваш единственный выход — switch.
S>То есть примерно так:

S>
S>int BinaryOp(int a, int b, int functionNo) // весь полиморфизм - здесь
S>{
S>  switch(functionNo)
S>  {
S>    case 0: return Add(a, b);
S>    case 1: return Mul(a, b);
S>    case 2: return Sub(a, b);
S>    default: throw new Exception("Unknown function no: " + functionNo.ToString());
S>  }
S>}

S>int Foo(int[] data, int initValue, int functionNo)
S>{
S>  var acc = initValue;
S>  for(var item in data)
S>    acc = BinaryOp(acc, item);
S>  return acc;
S>}
S>


Понял, спасибо.
Очень похожие решения также написали выше (про диспетчер, хотя суть немного отличается) и ниже (call_by_name).
https://rsdn.org/forum/design/8788561.1
Автор: Stanislav V. Zudin
Дата: 28.07 17:43

https://rsdn.org/forum/design/8788641.1
Автор: vsb
Дата: 28.07 20:49


Получается, это действительно единственный выход.