2016-05-04 4 views
4

Возможно, это вопрос новичков ... но можно ли показать определение функции (определяемой пользователем)? В процессе отладки/оптимизации удобно быстро увидеть, как была запрограммирована определенная функция.Как отобразить определение функции

Заранее благодарен.

+2

В настоящее время нет. – StefanKarpinski

ответ

4

Вы можете использовать @edit макрос, который должен принять вас в определении метода, аналогично тому, как @which макрос, который показывает файл и строка #, где было определено, что конкретный метод, например:

julia> @which push!(CDFBuf(),"foo") 
push!{T<:CDF.CDFBuf}(buff::T, x) at /d/base/DA/DA.jl:105 

julia> @which search("foobar","foo") 
search(s::AbstractString, t::AbstractString) at strings/search.jl:146 

Обратите внимание, что методы, входящие в состав Julia, будут показывать путь относительно исходного каталога julia.

+0

Спасибо Реми и Скотту за ваши ответы. Я думаю, что макрос @edit - это то, что мне нужно. Я получаю уведомление о том, что я использую неизвестный редактор, но я вижу, что он пытается указать мне на соответствующий файл и местоположение. Любые рекомендации для редактора для Windows 7? – InkPen

+0

Когда я все еще пользовался Windows, я использовал Epsilon (редактор Emacs, с C-подобным языком расширения), но, к сожалению, у него нет поддержки Julia. Я бы предположил, что Atom будет работать на Windows, поскольку он основан на браузере, и именно это используют все мои коллеги (я лично использую Gnu Emacs сейчас, в Mac OS X) –

3

Хотя это не автоматическая функция, доступная с Julia вообще (как указано Stefan), если вы добавляете docstrings при определении своей начальной функции, вы всегда можете использовать запрос help?> для запроса этой docstring. Например

julia> """mytestfunction(a::Int, b)""" function mytestfunction(a::Int, b) 
    return true 

Это придает "mytestfunction строку документации (а :: Int, б)" функции mytestfunction(a::Int, b). После того, как это определено, вы можете использовать подсказку «Справка Julia» (набрав ? в REPL), чтобы запросить эту документацию.

help?> mytestfunction 
    mytestfunction(a::Int, b) 
Смежные вопросы