Я пытаюсь создать указатель на процедуру (или эквивалент).Когда я делаю что-то вроде этого:
import random
# maybe a command line argument
let choice = "some algorithm"
proc withoutSideEffects(): int = 0
proc withSideEffects(): int = rand(10)
let procPtr =
case choice
of "algorithm1": withoutSideEffects
of "algorithm2": withSideEffects
(...)
компилятор жалуется, требуя, чтобы все процедуры в выражении case должны иметь прагму {.noSideEffects.}
У меня есть следующие вопросы:
- Есть ли способ обойти это?
- Если нет, является ли это намеренным (возможно, для предотвращения плохого дизайна)?
- Каковы альтернативы?