Nim: наложение процедур с побочными эффектами - PullRequest
0 голосов
/ 11 декабря 2018

Я пытаюсь создать указатель на процедуру (или эквивалент).Когда я делаю что-то вроде этого:

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.}

У меня есть следующие вопросы:

  1. Есть ли способ обойти это?
  2. Если нет, является ли это намеренным (возможно, для предотвращения плохого дизайна)?
  3. Каковы альтернативы?
...