我创建了我的不可变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
,而不是真正的数据类型......
答案 0 :(得分:5)
如果您希望它适用于任何功能,您可以执行
Base.dot(f::Function, a::Tensor_field) = do something different
如果仅希望它适用于已定义的nabla
函数,您可以利用已发现的内容,即每个函数都具有唯一类型:
Base.dot(f::typeof(nabla), a::Tensor_field) = do something different
这将匹配仅名为nabla
的函数,该函数现在将在函数f
内调用dot
。
请注意,您可以将write写为\nabla<TAB>
并在代码中使用它而不是单词nabla
。如果调用张量场,例如(写为
\mbfv<TAB>
),然后您可以在您的Julia代码中写∇⋅
! (居中的点写为\cdot<TAB>
,是dot
函数的别名。)