我正在尝试在 OSX 中使用 SWIG 为一些 C++ 代码编译一个 python 包装器的最小示例。
/* File : example.c */
double My_variable = 3.0;
int fact(int n) {
if (n <= 1) return 1;
else return n*fact(n-1);
}
int my_mod(int x, int y) {
return (x%y);
}
Run Code Online (Sandbox Code Playgroud)
和接口文件:
/* example.i */
%module example
%{
/* Put header files here or function declarations like below */
extern int fact(int n);
extern int my_mod(int x, int y);
%}
extern int fact(int n);
extern int my_mod(int x, int y); …Run Code Online (Sandbox Code Playgroud) 在MATLAB中,我可以将光标放在函数名称上并按Ctrl+ D,包含该函数的文件将自动打开.在Spyder IDE中,有什么方法可以用Python做类似的事情吗?
我是C#的新手.
我想做的事情似乎令人费解.让我们首先说我想要处理一些函数,以便稍后执行它们.我知道我可以通过以下方式实现这一目标:
List<Action> list = new List<Action>();
list.Add( () => instanceA.MethodX(paramM) );
list.Add( () => instanceA.MethodY(paramN, ...) );
for(Action a in list) {
a();
}
Run Code Online (Sandbox Code Playgroud)
但是,如果instanceA对象尚不存在,但我知道当我调用相应的函数时它会存在怎么办?MethodX和MethodY在我不应该修改的外部库上.
- 为什么:想想这种情况:A类有100个方法,每个方法根据A类状态返回不同的浮点数.但是,根据其他一些状态,我们可能只想访问前5个方法,或者只访问第一个和第四个方法.此方法适用的类状态可能会随时间而变化.我的想法是拥有一个包含所有100种方法的大型列表,然后使用与该方法相对应的索引,使用适当的方法创建子列表LL(例如,[1,2,3,4,5]或[ 1,4]).然后,一旦创建了对象A,我将依次运行子列表LL中的所有不同方法,不知何故它们被对象A调用.
有关如何实现这一点的任何想法?
有没有办法通过这种操作来提高性能?
t=0:0.01:100;
f=@(t,l) exp(-t.*l)
l=[0.1:0.5:100];
for ll=1:length(l)
a(ll,:)=f(t,l(ll));
end
Run Code Online (Sandbox Code Playgroud)
在这些情况下,我想不出任何避免循环的方法.
任何帮助表示赞赏.
arrays ×1
c# ×1
function ×1
macos ×1
matlab ×1
optimization ×1
performance ×1
python ×1
spyder ×1
swig ×1