标签: arguments

将值传递给函数参数

我有一个人的代码,用于设置新对象的名称.

function setName(human) { 
    human.name = "Nicholas";
    human = new Object();
    human.name = "Greg";
};

var newPerson = new Object(); 
setName(newPerson); 
console.log(newPerson.name);
Run Code Online (Sandbox Code Playgroud)

我想使用person对象的属性'name'的值.

我期待价值是'格雷格',但我得到'尼古拉斯'.

这是我的理解:'human'是指向Object的指针.调用该函数时,将通过newPerson的名称创建指向同一Object的另一个指针.

newPerson对象的'name'属性将设置为'Nicholas'.然后,在函数的第二行中创建另一个newPerson对象.因此,应该销毁第一个实例.然后,此新Object的'name'属性将设置为'Greg'.我哪里错了?

javascript arguments function parameter-passing

0
推荐指数
1
解决办法
39
查看次数

Haskell代码和类型中的参数数量不同,为什么?

任何人都可以解释下面的代码,请一步一步做.我知道它是定义一个函数和它的输入,但到底是什么(+)做的,为什么有三种不同的IntS IN plus4个 Int S IN plusplus的类型,而它好像有只有3个参数plusplus的代码?

 plus :: Int -> Int -> Int 
 plus = (+)

 plusPlus :: Int -> Int -> Int -> Int
 plusPlus a b c = a + b + c
Run Code Online (Sandbox Code Playgroud)

syntax haskell types arguments type-signature

0
推荐指数
1
解决办法
135
查看次数

如何在C#中的运行时为函数参数赋值默认值

我有以下课程:

public class Location
{
    private int X { get; set; }
    private int Y { get; set; }
    private int Z { get; set; }

    public UpdateLocation(int X, int Y, int Z)
    {
        this.X = X;
        this.Y = Y;
        this.Z = Z;
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,有时我需要更新其中一些参数和所有参数.所以我在考虑一种初始化函数参数的方法,而不是将它们分配给局部变量,如:

public UpdateLocation(int X = this.X, int Y = this.Y, int Z = this.Z)
{
    this.X = X;
    this.Y = Y;
    this.Z = Z;
}
Run Code Online (Sandbox Code Playgroud)

所以我可以像这样调用函数:

UpdateLocation(Z:1509);
Run Code Online (Sandbox Code Playgroud)

但显然,这不起作用,因为参数默认值必须是编译时常量.任何想法如何解决这个问题,而不创建三个不同的更新功能(或更多)来更新这些变量?

c# arguments function

0
推荐指数
1
解决办法
71
查看次数

函数中的参数太少了

我正在编写一个函数getIntLimited,它只能在某个最大值和最小值之间的数字之外.目前没有指定的最大值或最小值,但代码应该基本上起作用.但是,我似乎得到一个错误,说我在函数中的参数太少,但我不确定为什么会这样.这是我的代码:

#include <stdio.h>
#include <stdlib.h>

//tools
void welcome(void);
void printTitle(void);
void printFooter(double gTotal);
void flushKeyboard(void);
void pause(void);
int getInt(void);
double getDouble(void);
int getIntLimited(int lowerLimit, int upperLimit);

//app interface
int yes(void);
void GroceryInventorySystem(void);
int menu(void);

int main(void){
    int iVal;
    double dVal;
    welcome();
    printTitle();
    double grandtotal = 1234.57;
    printFooter(grandtotal);
    flushKeyboard();
    pause();
    getInt();
    int lowLimit;
    int upLimit;
    getIntLimited(int lowLimit, int upLimit);

    return 0;
}


//code your functions here:

void welcome(void)
{
    printf("---=== Grocery Inventory System ===---");
    printf("\n");
    return;
}

void printTitle(void)
{
    printf("Row …
Run Code Online (Sandbox Code Playgroud)

c parameters arguments function

0
推荐指数
1
解决办法
5593
查看次数

如何隐式处理C/C++宏中的参数?

我正在尝试阅读和理解用C编写的文件(这里)并且不太了解C(或者如果它是C++开头),我想知道如何:

 #define BEGIN yy_start = 1 + 2 *
Run Code Online (Sandbox Code Playgroud)

当像这样调用时:

 BEGIN(new_state)
Run Code Online (Sandbox Code Playgroud)

工作中.我知道BEGIN是一个宏/占位符设置yy_start.但是我找不到任何关于传入的参数是如何处理的, 操作数也没有让我到处找.

问题:如果没有明确处理它们,如何在C/C++宏中处理参数?

macros arguments c-preprocessor

0
推荐指数
2
解决办法
96
查看次数

我应该如何在Python中使用参数传递参数(dict vs variables)?

我有一个函数/方法A()需要一些参数(包括可选参数).另一个功能B()是对要传递给所述功能的数据进行预处理A().我几乎没有该功能的替代实现,B()这使我对一个优于另一个的优点感到困惑.我想了解我应该使用哪些(如果有的话).

毕竟, There should be one-- and preferably only one --obvious way to do it.

这是代码片段:

class Foo(object):

    def __init__(self, param1, param2, param3=None):
        self.param1 = param1
        self.param2 = param2
        self.param3 = param3

    @classmethod
    def from_dump_v1(cls, dump):
        param1, param2, param3 = dump.get('param_1'), dump.get('_param_2'), dump.get('paramThree')
        return cls(param1, param2, param3)

    @classmethod
    def from_dump_v2(cls, dump):
        dump['param1'] = dump.pop('param_1')
        dump['param2'] = dump.pop('_param_2')
        dump['param3'] = dump.pop('paramThree')
        return cls(**dump)

    @classmethod
    def from_dump_v3(cls, dump):
        result = dict()
        result['param1'] = dump.get('param_1') …
Run Code Online (Sandbox Code Playgroud)

python parameters arguments function

0
推荐指数
1
解决办法
81
查看次数

bash"$ @"不使用以' - '开头的参数

我正在使用一个选项驱动的bash脚本,它将使用getopts.该脚本的情况是,它可以接受多个选项和只接受一个选项的特定情况.在测试一些案例时,我遇到了这个问题,我已经将这个问题简化为伪代码.

for arg in "$@"; do
  echo ${arg}
done
echo "end"
Run Code Online (Sandbox Code Playgroud)

在下面运行返回:

$ ./test.sh -a -b
-a

end
Run Code Online (Sandbox Code Playgroud)

我正在运行bash 4.1.2,为什么不在空行返回-b?我认为这与' - '有关.

bash shell arguments parameter-passing

0
推荐指数
1
解决办法
78
查看次数

重新定义子例程时没有足够的参数

当我重新定义我自己的子程序(而不是Perl内置函数)时,如下所示:

perl -ce 'sub a($$$){} sub b {a(@_)}'
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

main :: a at -e line 1,"@_"附近的参数不够

我想知道为什么.

编辑:

"重新定义"这个词可能没有很好地选择.但在我的情况下(我可能应该已经解释了我原本想要做的事情),我想重新定义(并且这里"重新定义"有意义)Test :: More ::是通过打印第一个日期和时间之前的功能测试结果.

这就是我所做的:

Test::More.pm :

sub is ($$;$) {
    my $tb = Test::More->builder;

    return $tb->is_eq(@_);
}


MyModule.pm :

sub is ($$;$) {
   my $t    = gmtime(time);
   my $date = $t->ymd('/').' '.$t->hms.' ';

   print($date);
   Test::More::is(@_);
}
Run Code Online (Sandbox Code Playgroud)

perl arguments subroutine

0
推荐指数
2
解决办法
226
查看次数

Go中涉及通道的以下函数参数之间有什么区别?

这段代码与函数参数中的channel运算符有关:

func Worker(item <- chan string)
Run Code Online (Sandbox Code Playgroud)

而这个代码在函数参数中没有通道运算符:

func Worker(item chan string)
Run Code Online (Sandbox Code Playgroud)

arguments function channel go

0
推荐指数
1
解决办法
61
查看次数

使用加法和减法运算符作为参数在python中编写函数

我真的很困惑,我不知道如何解决以下问题.

想象一下,我编写了一个很长的代码,我想将这个长代码转换为一个函数来防止重复.问题是我需要将'添加符号'(+)和'减法符号'( - )作为函数输入.我的意思是我有一个非常长的代码,我需要每次更改两个加法和减法的符号,而不是更多,最后根据改变这两个运算符得到输出(这两个运算符实际上是我的变量!)

如您所知,对于改变"加法和减法符号"的四种不同状态重复这个长函数,会使我的代码更长更长.我想知道是否有任何方法可以定义一个函数,它将这对加法和减法运算符作为输入,并给出这四种不同条件的输出?我举了一个简单的例子来澄清这个问题:

想象一下,我在"减号"和"加号"中有四个相似的"for循环":

edges=set()
a=60; b=40
for i in range(0,300):
    a+=1; b+=1
    if a!=0 and b!=0:
        edges.add((a, b))

a=60; b=40
for i in range(0,300):
    a-=1; b-=1
    if a>=0 and b>=0:
        edges.add((a, b))

a=60; b=40
for i in range(0,300):
    a+=1; b-=1
    if a>=0 and b>=0:
        edges.add((a, b))

a=60; b=40
for i in range(0,300):
    a-=1; b+=1
    if a>=0 and b>=0:
        edges.add((a, b))
print(edges)
Run Code Online (Sandbox Code Playgroud)

如你所见,除了"加号和减号"之外,这四个"for循环"都是相同的.我想只写一个函数而不是这四个重复的'for循环'.有没有其他方法可以解决这个问题?任何人有任何想法?

python arguments function

0
推荐指数
1
解决办法
578
查看次数