【问题标题】:How to alias quit() to quit?如何别名 quit() 退出?
【发布时间】:2014-10-14 01:06:43
【问题描述】:

这只是一种方便,但我认为很有用。请注意,IPython 和 Matlab 一样允许纯退出。因此,在 Julia 中允许别名是合理的。

感谢您提供有关如何执行此操作的任何想法。

【问题讨论】:

    标签: julia


    【解决方案1】:

    在 Julia 中退出

    如果您从命令行使用 Julia,那么 ctrl-d 可以工作。但是,如果您的意图是通过键入命令退出,这不可能完全按照您想要的方式进行,因为在 REPL 中键入 quit 已经具有返回与退出关联的值的含义,即是函数退出。

    julia> quit
    quit (generic function with 1 method)
    
    julia> typeof(quit)
    Function
    

    还有 Python

    但这并不罕见,例如Python has similar behavior

    >>> quit
    Use quit() or Ctrl-D (i.e. EOF) to exit
    

    使用宏

    在 Julia REPL 中使用 \q 可能会很好,例如 in postgres REPL,但不幸的是 \ 也适用于 already has a meaning。但是,如果您正在寻找一种简单的方法来做到这一点,那么宏呢

    julia> macro q() quit() end
    
    julia> @q
    

    导致 Julia 辞职

    如果将宏定义放在.juliarc.jl file 中,则每次运行解释器时都可以使用它。

    【讨论】:

    • 我在我的启动文件中使用了@q 宏定义,它不如psql 中的\q 好,只是因为它需要一个大便和小指。 OTOH,它适合朱莉娅的宏观世界,也许我会将我的大写锁定重新映射到@。
    【解决方案2】:

    正如 waTeim 所说,当您在 REPL 中键入 quit 时,它只会显示函数本身……并且无法更改此行为。不调用函数就无法执行函数,并且在 Julia 的语法中调用函数的方法数量有限。

    然而,您可以做的是改变函数的显示方式。这是非常 hacky 并且不能保证有效,但如果你非常想要这种行为,你可以这样做:将这种行为破解到 display 方法中。

    julia> function Base.writemime(io::IO, ::MIME"text/plain", f::Function)
               f == quit && quit()
               if isgeneric(f)
                   n = length(f.env)
                   m = n==1 ? "method" : "methods"
                   print(io, "$(f.env.name) (generic function with $n $m)")
               else
                   show(io, f)
               end
           end
    Warning: Method definition writemime(IO,MIME{symbol("text/plain")},Function) in module Base at replutil.jl:5 overwritten in module Main at none:2.
    writemime (generic function with 34 methods)
    
    julia> print # other functions still display normally
    print (generic function with 22 methods)
    
    julia> quit # but when quit is displayed, it actually quits!
    
    $
    

    不幸的是,没有比::Function 更具体的类型,因此您必须完全覆盖writemime(::IO,::MIME"text/plain",::Function) 定义,复制其实现。

    还要注意,这是非常出乎意料的并且有些危险。某些库实际上可能最终会尝试显示函数 quit... 导致您在该会话中丢失您的工作。

    【讨论】:

      【解决方案3】:

      在 Julia 中与退出有关

      我正在寻找一些简单的东西。这个问题自 2017 年以来一直没有更新,因为我现在尝试学习 Julia,并花一些时间在谷歌上搜索一些简单且类似于 python 的东西。在这里,我发现了什么: 您可以使用:

      exit()
      

      注意

      我用julia 1.53

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-08-04
        • 2016-08-14
        • 2019-12-03
        • 1970-01-01
        • 2017-05-19
        相关资源
        最近更新 更多