我已经创建了不可变的Tensor_field
和一个作用于张量的函数nabla
(即nabla(a::Tensor_field) = do some
.
我为张量的 dot
添加了一个方法:Base.dot(a::Tensor_field, b::Tensor_field) = do some...
.
现在我想用 nabla
作为参数定义一个新的函数 dot
行为。
类似于 Base.dot(nabla::function, a::Tensor_field) = 做一些不同的事情
。
我知道在 Julia 中我们能够将函数作为参数传递给其他函数,但我在文档中找不到如何为“函数”参数定义方法。
如果我输入 typeof(nabla)
,输出是 My_Module_Name.#nabla
,而不是真正的 DataType...
最佳答案
如果您希望它适用于任何功能,您可以这样做
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
.
请注意,您可以将 ∇ 写为 \nabla<TAB>
并在代码中使用它来代替单词 nabla
。如果你的张量场被称为例如𝐯
(写为 \mbfv<TAB>
),然后您可以写 ∇⋅𝐯
在你的 Julia 代码中! (居中的点写为 \cdot<TAB>
,是 dot
函数的别名。)
关于julia - 我可以向函数添加一个方法来接收另一个特定函数作为参数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42324137/