julia - 我可以向函数添加一个方法来接收另一个特定函数作为参数吗?

标签 julia

我已经创建了不可变的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/

相关文章:

parallel-processing - 如何在第一个函数运行时调用第二个函数,反之亦然?

plot - 使用 Julia-Package "Plots"的不对称带状折线图

julia - Julia 中的生成器表达式

julia - ODE 求解的问题

arrays - 如何在 Julia 中查找数组中多个元素的位置

jupyter-notebook - 如何在 Jupyter 中使用 LaTexStrings 包?

csv - 将现有和填充的 Julia Dataframe 写入 csv 输出时出错

tuples - 如何迭代 Julia NamedTuple 中的名称和值?

Julia 相当于 np.pad 中的 pad_width

julia - 在 julia 中解压一组元组