Как получить взаимозависимые параметры?

Я хочу сделать что-то вроде

foo[OptionsPattern[]] := OptionValue[b]
Options[foo] = {a -> 0, b :> OptionValue[a]};
foo[a -> 1]

, и Mathematica предоставит мне 1 вместо 0 . Есть ли лучший способ сделать это, чем

foo[OptionsPattern[]] := (
  Options[foo] = {a -> 0, b :> OptionValue[a]};
  OptionValue[b]
)
foo[a -> 1]

?

Во-первых, неэффективно устанавливать параметры foo при каждом вызове, особенно если foo имеет много параметров .

8
задан Jason Gross 28 October 2011 в 01:17
поделиться