有时可能会意外地定义一个与您不知道的内置函数同名的变量。例如,有一个函数称为
angle()
,但您可以这样做:
julia> angle=1.5
1.5
julia> angle(1+1im)
ERROR: MethodError: objects of type Float64 are not callable
julia> typeof(angle)
Float64
现在您无法“看到”函数定义,因为您的变量正在隐藏它。
要解决此问题,您可以键入:
julia> angle=Base.angle
angle (generic function with 3 methods)
julia> angle(1+1im)
0.7853981633974483
一个好问题是,为什么Julia不告诉我我刚刚重写了一个基本函数?
补遗
答案是(感谢@Matt在评论中)如果你使用它
然后
重新定义它,您将收到警告:
_
_ _ _(_)_ | A fresh approach to technical computing
(_) | (_) (_) | Documentation: https://docs.julialang.org
_ _ _| |_ __ _ | Type "?help" for help.
| | | | | | |/ _` | |
| | |_| | | | (_| | | Version 0.6.0 (2017-06-19 13:05 UTC)
_/ |\__'_|_|_|\__'_| | Official http://julialang.org/ release
|__/ | x86_64-apple-darwin13.4.0
julia> angle(1+2im)
1.1071487177940904
julia> angle=1.5
WARNING: imported binding for angle overwritten in module Main
1.5