我已经创建了我的不可变Tensor_field和一个nabla作用于张量的函数(即nabla(a::Tensor_field) = do something.
我添加了一个dot为张量函数的方法:Base.dot(a::Tensor_field, b::Tensor_field) = do something....
现在,我想定义一个新的行为发挥作用dot与nabla作为参数.有点像 Base.dot(nabla::function, a::Tensor_field) = do something different.
我知道在Julia中我们能够将函数作为参数传递给其他函数,但我在文档中找不到如何为"功能"参数定义方法.
如果输入的typeof(nabla)是输出My_Module_Name.#nabla,则不是真正的DataType ...
如果您希望它适用于任何功能,您可以这样做
Base.dot(f::Function, a::Tensor_field) = do something different
Run Code Online (Sandbox Code Playgroud)
如果您只希望它适用于nabla已定义的函数,您可以利用已发现的内容,即每个函数都具有唯一类型:
Base.dot(f::typeof(nabla), a::Tensor_field) = do something different
Run Code Online (Sandbox Code Playgroud)
这将仅匹配调用的函数nabla,现在将f在函数内部调用dot.
请注意,您可以编写∇as \nabla<TAB>并在代码中使用它而不是单词nabla.如果你的张量字段被调用,例如 (written as \mbfv<TAB>),你可以写下??你的Julia代码!(居中的点被写为\cdot<TAB>,并且是该dot函数的别名.)