将事物置于上下文中:
a)在julia中,可以通过执行"foo"
将字符串repeat("foo",n)
重复n次。
我试图找出是否为此定义了“符号运算符”别名(在这里广义上使用“别名”),因为我怀疑可能存在,并且我通过检查文件"foo" ^ n
来发现它是repeat(::String,::Integer)
。被定义(types.jl
); ^
在下面明确定义,基本上是repeat
的包装。
知道了
less(^, (String,Int64))
进行确认,这的确使我进入了相同的文件和行。 ^
,我会得到^ (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/