标签: argument-passing

C参数不起作用?

为什么这不起作用?当我尝试使用-l或-s作为第一个参数时,if语句不会使用.他们总是去发表其他声明.

#include <stdio.h>
#include <fcntl.h>
#include <errno.h>
#include <string.h>
#include <stdlib.h>

int main(int argc, char* argv[])
{
    if (argv[1] == "-l")
    {
        printf("Yay!\n");
    }
    else if (argv[1] == "-s")
    {
        printf("Nay!\n");
    }
    else
    {
        printf("%s\n", argv[1]);
    }
        return 0;
}
Run Code Online (Sandbox Code Playgroud)

c argument-passing

2
推荐指数
1
解决办法
115
查看次数

Python通过函数包装器传递变量赋值

所以我知道你可以通过执行以下操作将函数包装在另一个函数周围.

def foo(a=4,b=3):
   return a+b
def bar(func,args):
   return func(*args)
Run Code Online (Sandbox Code Playgroud)

所以,如果我随后打电话

bar(foo,[2,3])
Run Code Online (Sandbox Code Playgroud)

返回值为5.

我想知道有没有办法使用bar来调用foo与foo(b = 12),其中bar会返回16?

这有意义吗?非常感谢你提前的时间!抱歉问了这么多问题.

python variables function argument-passing

2
推荐指数
1
解决办法
1379
查看次数

如何在R中的"lapply"函数中使用函数"rank"?

R版本2.11.1在Windows 7上为32位

现在我得到代码: lapply(x, rank)

但我希望"等级"为: ties.method="first"

r argument-passing rank

2
推荐指数
1
解决办法
491
查看次数

处理大型变量并将其传递给python中的函数\对象

我发现自己需要处理带有大量变量的函数和对象.

对于特定情况,请考虑来自分离模块的函数,该函数接受N个不同的变量,然后将它们传递给新的实例化对象:

def Function(Variables): 
    Do something with some of the variables
    object1 = someobject(some of the variables)
    object2 = anotherobject(some of the variables, not necessarily as in object1)
Run Code Online (Sandbox Code Playgroud)

虽然我可以传递一长串变量,但我不时会发现自己对一个函数进行了更改,这需要对其可能调用的其他函数或它可能创建的对象进行更改.有时,变量列表可能会略有变化.

是否有一种很好的方式来传递大量变量并保持灵活性?

我尝试以下列方式使用kwargs:

def Function(**kwargs):

    Rest of the function
Run Code Online (Sandbox Code Playgroud)

并且调用Function(**somedict),其中somedict是一个字典,其中包含我需要传递给Function的所有变量的键和值(可能还有更多).但我得到一个关于未定义的全局变量的错误.

EDIT1:

我将在稍后发布这段代码,因为我现在不在家或实验室.直到那时我会尝试更好地解释这种情况.

我有一个分子动力学模拟,它需要几十个参数.很少需要迭代参数(例如温度).为了充分利用四核处理器,我并行运行了不同的迭代.因此,代码以不同迭代的循环开始,并且在每次传递时将该迭代的参数发送到工作池(使用多处理模块).它类似于:

P = mp.pool(number of workers) # If i remember correctly this line 
for iteration in Iterations:
     assign values to parameters
     P.apply_async(run,(list of parameters),callback = some post processing)
P.close()
P.join()
Run Code Online (Sandbox Code Playgroud)

函数run获取参数列表并生成模拟对象,每个参数都将一些参数作为其属性.

EDIT2:

这是有问题的功能的一个版本.**kwargs包含'sim','lattice'和'adatom'所需的所有参数.

def run(**kwargs): 
"""'run' runs a …
Run Code Online (Sandbox Code Playgroud)

python argument-passing

2
推荐指数
1
解决办法
2901
查看次数

如何检查参数是否是JavaScript中的对象(而不是数组)

在测试之后,instasnceof我发现如果参数是数组或对象文字,它将返回true.

function test(options){
  if(options instanceof Object){alert('yes')}//this will alert for both arrays and object literals
}
test({x:11})// alerts
test([11])// alerts as well but I do not want it to
Run Code Online (Sandbox Code Playgroud)

有没有办法测试参数"options"是否是对象文字?

PS我正在创建一个允许用户访问其配置选项的模块,我想测试参数是否只是一个对象文字

javascript arguments argument-passing

2
推荐指数
1
解决办法
4403
查看次数

如何在Ruby中传递方法作为参数?

我将一个方法作为参数传递给被调用的函数:

def my_function(args1)
   puts args1
end

def my_calling_method
   self.my_function(def do_this 
             return 2*3
           end)
end
Run Code Online (Sandbox Code Playgroud)

当我打电话给my_calling_method谁打电话时my_function,我得到的args1是nil而不是def do_this return 2*3 end.

我做错了吗?我们可以在Ruby中传递方法作为参数吗?

好吧,我现在尝试为我的要求实现了一个Proc,但是我很难将它传递给调用方法.

my_Proc = Proc.new do
    return 2*3
end

def my_calling_method
    self.my_function
end

def my_function my_Proc
   my_Proc.call
end
Run Code Online (Sandbox Code Playgroud)

我使用的参考材料将Proc作为参数传递给方法,就像我一样,但我收到错误,零参数传递给my_function,因为我没有通过my_calling_method传递任何参数.

ruby methods arguments argument-passing

2
推荐指数
1
解决办法
5492
查看次数

c ++函数(带体)作为参数

我想传递一个函数作为参数.我知道你可以传递一个函数指针,就像我的例子中的第一个测试一样,但是可以像我的第二次测试一样传递一个hold函数(不是指针)吗?

#include <iostream>

using namespace std;


/* variable for function pointer */
void (*func)(int);

/* default output function */
void my_default(int x) {
    cout << "x =" << "\t" << x << endl << endl;
}


/* entry */
int main() {
    cout << "Test Programm\n\n";

    /* 1. Test - default output function */
    cout << "my_default\n";
    func = &my_default;   // WORK! OK!
    func(5);

    /* 2. Test - special output function 2 */
    cout << "my_func2\n";
    func =  void my_func1(int …
Run Code Online (Sandbox Code Playgroud)

c++ function argument-passing

2
推荐指数
1
解决办法
146
查看次数

如何在java中将部分数组作为函数参数传递?

#include<stdio.h>
void fun(int a[],int n)
{
    int i;
    for(i=0;i<n;i++)       
        printf("%d ",a[i]); 
}

int main()
{
    int arr[]={1,2,3,4,5,6};
    fun(arr+2,3);       
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出:3 4 5从第3个元素开始的数组已经传递到C中的fun().如果在JAVA中没有这样的指针,在JAVA中如何做同样的事情?

在回答下面的一条评论时,我想添加我实际上要做的事情的细节,因为评论部分太长了.我需要递归地访问一个数组的子节.实际上我试图通过比较两个数组的中位数来找到"两个排序数组的中位数",使用以下算法:1)分别计算输入数组ar1 []和ar2 []的中位数m1和m2.2)如果m1和m2都相等,那么我们就完成了.返回m1(或m2)3)如果m1大于m2,则中值存在于以下两个子阵列之一中.a)从ar1的第一个元素到m1(ar1 [0 ... | n/2 |])b)从m2到ar2的最后一个元素(ar2 [| n/2 | ... n-1])4)如果m2大于m1,则中值存在于
以下两个子阵列之一中.a)从m1到ar1的最后一个元素(ar1 [| n/2 | ... n-1])b)从ar2的第一个元素到m2(ar2 [0 ... | n/2 |])5)重复上述过程,直到两个子阵列的大小变为2. 6)如果两个数组的大小为2,则使用下面的公式来获得中位数.中位数=(max(ar1 [0],ar2 [0])+ min(ar1 [1],ar2 [1]))/ 2

java arrays function argument-passing

2
推荐指数
1
解决办法
8593
查看次数

如何用参数写lambda函数?C++

我想用lambda函数调用一个方法(对于这个例子std :: thread构造函数),传递int值:

int a=10;

std::thread _testThread = thread([a](int _a){
  //do stuff using a or _a ?
});
_testThread.detach();
Run Code Online (Sandbox Code Playgroud)

我不知道如何正确编写这样的函数,我得到这个错误:C2064:term不计算为0参数的函数

c++ argument-passing inline-functions stdthread

2
推荐指数
1
解决办法
8928
查看次数

在C中调用具有较少数量参数的函数?

我奇怪地发现C允许链接参数列表不匹配的函数:

//add.c
int add(int a, int b, int c) {
    return a + b + c;
}
//file.c
int add (int,int); //Note: only 2 arguments
void foo() {
    add(1,2);
}
Run Code Online (Sandbox Code Playgroud)

我首先编译了add.c,然后编译了file.c,两者都编译成功.奇怪的是,链接器没有给出任何类型的错误或警告,可能原因是C链接器在链接时不比较参数.我不是100%肯定它.有人请对此发表评论.

现在,问题是在编译期间避免这种情况或得到某种警告的好习惯是什么,因为在我的项目中,在不同的文件中有很多函数,现在我们必须在函数中添加一些额外的参数.

c arguments argument-passing

2
推荐指数
3
解决办法
93
查看次数