Создание словаря функций с символами в качестве клавиш - PullRequest
0 голосов
/ 28 августа 2018

Я пытаюсь создать словарь функций с символами в качестве ключей, но получаю ошибку. Я пробовал следующее:

functions = Dict{
                    :gauss => (v::Float64)->gauss(v, 0.0, 1.0),
                    :sin   => (v::Float64)->  sin(v),
                    :nsin  => (v::Float64)->(-sin(v)),
                    :cos   => (v::Float64)->  cos(v),
                    :ncos  => (v::Float64)->(-cos(v)),
                    :tanh  => (v::Float64)->tanh(v),
                    :sigm  => (v::Float64)->sigmoid(v),
                    :id    => (v::Float64)->id(v)
                }

Ошибка, которую я получаю: ОШИБКА: LoadError: TypeError: in Тип, в параметре, ожидаемый тип, получил пару {символ, поле get (Main, Symbol ("## 105 # 113"))}

Пожалуйста, дайте мне знать, что я делаю не так. Заранее спасибо за помощь.

Ответы [ 2 ]

0 голосов
/ 28 августа 2018

Как вы сами выяснили, в скобках {} указаны параметры типа , а в парантезе указывается конструктор вызов.

Обратите внимание, что аннотации типа ::Float64 не обязательны для выполнения ваших функций. Думайте о них больше как об ограничении пользовательского интерфейса; то есть пользователи не смогут вызывать ваши методы с не Float64 s. Однако, если вы хотите явно указать типы, вы также можете явно указать тип вашего словаря, например, Dict{Symbol, Function}(...). Однако, поскольку вы не инициализируете пустое значение Dict, Джулия определит лучший тип на основе вашего ввода (пары функций символа).

0 голосов
/ 28 августа 2018

Я понял, что {} нужно заменить на ().

...