在Julia中读取用户定义函数的输入?

在Julia中读取用户定义函数的输入?,julia,Julia,我正在定义一个函数,它将从用户那里获取一个新函数并进行一些“数学运算”。对于这个用户定义的函数,我显然是一片空白,因为我不知道他/他对其函数的输入是什么。我需要在函数所做的“数学”中了解这些用户输入 这是我的功能,比如 function userfunction(x,y) return x+y end 例如,我显然不知道上述用户定义函数中的输入x和y。我使用此函数在函数中进行一些数学运算,但我需要知道x和y是userfunction的输入 function myfun(userfun

我正在定义一个函数,它将从用户那里获取一个新函数并进行一些“数学运算”。对于这个用户定义的函数,我显然是一片空白,因为我不知道他/他对其函数的输入是什么。我需要在函数所做的“数学”中了解这些用户输入

这是我的功能,比如

function userfunction(x,y)
     return x+y
end
例如,我显然不知道上述用户定义函数中的输入
x
y
。我使用此函数在函数中进行一些数学运算,但我需要知道
x
y
userfunction
的输入

function myfun(userfunction::Function)
    ....do so maths...
    #but some maths here need to know the inputs of "userfunction"
end

Julia中是否有一个函数可以读取另一个函数的输入?例如,读取“userfunction”的输入并返回一个数组?

我不确定您到底在寻找什么,但是如果您想知道您的
userfunction
采用了什么类型的参数,您可以得到它

首先,请记住,
userfunction
可以有多个方法,每个方法都有不同的参数(耶,多分派!)。要获取它们的数组,请执行以下操作:

meths=collect(方法(div))

然后,对于每个方法,您可以查找其签名:

signature=meths[1].sig
,它将为您提供一个类型
元组{typeof(div),Int,Int}

然后,放弃签名的第一个元素以获取参数: arguments=
元组(signature.parameters[2:end])
,获取参数类型:
(Int,Int)


这相当复杂,也许有一种更简单的方法。

您能至少提供您期望的输入示例吗?您可能对
parse
函数感兴趣,但如果没有进一步的信息,很难说得更多。@NilsGudat我已经编辑了问题的解释谢谢,这很有帮助,尽管我还不完全清楚-您想在
myfun
中使用
x
y
的值吗,只需传递
userfunction
?你能把你的例子扩展到一个简单的例子“这是用户实际输入的内容”(在哪里)和“这是我想用这个输入做的事情”吗?一般来说,在我看来,您所要求的似乎是不可能的(即,仅将函数对象传递给
myfun
不会为您提供有关此函数对象可能被调用的特定值的任何信息),其结果为我提供了输入类型。但我想知道的是输入本身。因此,就像
x
y
而不是
(Int,Int)
Afaik,这通常是不可能的-尽管我仍然不确定您实际上是如何获得
userfunction
(即,用户在哪里输入它以及您可以观察到哪些输入)的,
userfunction
必须是将某些输入作为参数的函数。所以我想在做数学之前先知道这个参数,在
myfun
中“必须是一个函数,将某些输入作为参数”是什么意思?雅各布给出了当“某些输入”意味着输入类型受到限制时的解决方案。我仍然不明白用户在哪里输入
userfunction
,以及如何获得它。如果不知道这一点,很难说您是否可以在
userfunc(x,y)
中重新处理
x
y
的值(而不是类型)。