相关疑难解决方法(0)

Python函数通过引用调用

在某些语言中,您可以使用特殊的保留字(如refval)通过引用或值传递参数.当您将参数传递给Python函数时,它永远不会在离开函数时改变参数的值.唯一的方法是使用全局保留字(或者我当前理解它).

例1:

k = 2

def foo (n):
     n = n * n     #clarity regarding comment below
     square = n
     return square

j = foo(k)
print j
print k
Run Code Online (Sandbox Code Playgroud)

会表现出来

>>4
>>2
Run Code Online (Sandbox Code Playgroud)

显示k是不变的

在此示例中,变量n永远不会更改

例2:

n = 0
def foo():
    global n
    n = n * n
    return n
Run Code Online (Sandbox Code Playgroud)

在此示例中,变量n已更改

在Python中是否有任何方法可以调用函数并告诉Python 参数还是引用参数而不是使用全局?

其次,在A级剑桥考试,他们现在说一个函数返回一个单一而过程返回值超过一个值.在80年代,我被教导了一个函数有一个返回语句,而程序没有.为什么现在不正确?

python

62
推荐指数
6
解决办法
13万
查看次数

"{Binding Path =.}"和"{Binding}"是否真的相等

在我的WPF项目中,我有一个ListBox来显示List<string>集合中的项目.我想让这些项目的文本可编辑,所以我将每个项目包装在带有TextBox的ItemTemplate中(可能不是最好的方法,但我是WPF的新手).我只是将TextBoxes的Text属性绑定到每个项的值时遇到了麻烦.我最后偶然发现了一个使用单个点或句点作为其Path属性({Binding Path=.})的示例:

<ListBox ItemsSource="{Binding ElementName=recipesListbox,Path=SelectedItem.Steps}">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <TextBox Text="{Binding Path=.}"/>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>
Run Code Online (Sandbox Code Playgroud)

但是我不明白为什么单纯使用{Binding}不起作用.

根据微软的说法,它提出了" 双向绑定需要Path或XPath "的例外情况:

[...]句点(.)路径可用于绑定到当前源.例如,Text ="{Binding}"等同于Text ="{Binding Path =.}"

有人可以阐明这种模棱两可的行为吗?

编辑:此外,它似乎{Binding Path=.}不一定提供双向绑定,因为修改文本和移动焦点不会更新底层源(相同的源也具有在DataGrid控件上显示和成功修改的属性).我肯定在这里遗漏了一些东西.

wpf xaml binding path

46
推荐指数
4
解决办法
3万
查看次数

41
推荐指数
4
解决办法
9938
查看次数

在C++中通过引用/值传递

我想澄清价值和参考之间的差异.

我画了一张照片

在此输入图像描述

所以,为了通过价值,

使用不同的引用创建相同对象的副本,并为本地变量分配新引用,以指向新副本

如何理解单词:"如果函数修改了该值,则修改也出现在调用函数的范围内,用于传递值和引用"

谢谢!

c++ pass-by-reference pass-by-value

35
推荐指数
5
解决办法
10万
查看次数

在C和C++中,"通过引用传递"到底有什么区别?

C和C++开发人员使用短语"通过引用传递",但它们似乎用于表示不同的东西.每种语言中这个模棱两可的短语究竟有什么区别?

c c++ terminology pass-by-reference pass-by-value

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

通过目标C中的值或引用传递参数

我对目标c有点新意,我试图通过引用传递参数,但表现得像是一个值.你知道为什么这不起作用吗?

这是功能:

- (void) checkRedColorText:(UILabel *)labelToChange {
    NSComparisonResult startLaterThanEnd = [startDate compare:endDate];
    if (startLaterThanEnd == NSOrderedDescending){
        labelToChange.textColor = [UIColor redColor];
    }
    else{
        labelToChange.textColor = [UIColor blackColor];
    }

}
Run Code Online (Sandbox Code Playgroud)

这就是电话:

UILabel *startHourLabel; // This is properly initialized in other part of the code
[self checkRedColorText:startHourLabel];
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助

objective-c pass-by-reference

23
推荐指数
2
解决办法
4万
查看次数

Golang结构初始化

有一个像这样的简单结构:

type Event struct {
    Id         int
    Name       string
}
Run Code Online (Sandbox Code Playgroud)

这两种初始化方法有什么区别?

e1 := Event{Id: 1, Name: "event 1"}
e2 := &Event{Id: 2, Name: "event 2"}
Run Code Online (Sandbox Code Playgroud)

我为什么要使用这些初始化方法?

谢谢

go

19
推荐指数
2
解决办法
4万
查看次数

当我更改函数内部的参数时,它也会为调用者更改吗?

我在下面写了一个函数:

void trans(double x,double y,double theta,double m,double n)
{
    m=cos(theta)*x+sin(theta)*y;
    n=-sin(theta)*x+cos(theta)*y;
}
Run Code Online (Sandbox Code Playgroud)

如果我在同一个文件中调用它们

trans(center_x,center_y,angle,xc,yc);
Run Code Online (Sandbox Code Playgroud)

会的价值xcyc改变?如果没有,我该怎么办?

c++

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

当我写Func1(int&a)和Func1(int*a)时有什么区别

可能重复:
C++中指针变量和引用变量之间的差异

当我开始使用C++时,我发现下面的操作令人困惑.我知道通过引用传递和传递值.但是最近我遇到了这样的功能让我很困惑:

Func1(int &a) 
Func2(int *a)
Run Code Online (Sandbox Code Playgroud)

这两个函数都期望a的地址,但是当我调用Func1时,我会这样做,Func1(a)而在Func2的情况下,我调用了Func2(&a)

为什么Func1在期望a的地址时直接接受int a

c++ windows parameter-passing pass-by-reference

12
推荐指数
3
解决办法
1万
查看次数

Java通过方法改变变量的值?

您好我想知道如何将变量作为参数发送到方法并让方法更改它.例如

public class Main {
    public static void main(String[] args) {
        int i = 2;
        doThis(i);
        System.out.println(i);  
    }

    public static void doThis(int i) {
        i = 3;
    }
}
Run Code Online (Sandbox Code Playgroud)

我想打印出3而不是2.谢谢.

java

12
推荐指数
3
解决办法
6万
查看次数