将事物置于上下文中:

a)在julia中,可以通过执行"foo"将字符串repeat("foo",n)重复n次。

我试图找出是否为此定义了“符号运算符”别名(在这里广义上使用“别名”),因为我怀疑可能存在,并且我通过检查文件"foo" ^ n来发现它是repeat(::String,::Integer)。被定义(types.jl); ^在下面明确定义,基本上是repeat的包装。

知道了

  • 之后,我在REPL中键入less(^, (String,Int64))进行确认,这的确使我进入了相同的文件和行。
  • 如果我在REPL中键入^,我会得到^ (generic function with 47 methods)


  • b)×cross的别名,即调用[1.,2.,3.] × [1.,2.,3.]cross([1.,2.,3.],[1.,2.,3.])似乎是等效的,并且is(×,cross)返回true
  • 如果我在终端中输入×,我会得到cross (generic function with 1 method)
  • 如果我键入less(×,(AbstractVector,AbstractVector)),它将直接带我到cross的定义,而不是×的显式定义;
  • 经过一番“摸索”之后,我在const × = cross中找到了sysimg.jl的定义。




  • 最佳答案

    对于第一个问题,请尝试

    julia> [x for x in names(Base) if eval(Base, x) === cross]
    2-element Array{Symbol,1}:
     :cross
     :×
    

    对于您的第二个,我不知道是否有比grep ping更好的方法。我想,这里有“蛮力”:
    julia> [x for x in names(Base.Operators) if try eval(:(Base.Operators.$x("x", 3))) end == "xxx"]
    1-element Array{Symbol,1}:
     :^
    

    ...我真的不推荐。但是如果可行...

    关于alias - 如何在Julia中找到现有函数 "aliases"?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39302133/

    10-13 09:43