小编Vad*_*aev的帖子

如何在不使用第三个变量的情况下交换两个Perl变量?

我想在不使用Perl中的第三个变量的情况下交换两个变量值,例如:

my $first = 10;
my $second = 20;
Run Code Online (Sandbox Code Playgroud)

请建议我如何以简单的方式在Perl中执行此操作.

perl

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

Java访问者模式而不是instanceof开关

在这个问题中,据说我可以使用访客模式而不是一堆instanceofs.Jmg说:"如果你不能自由改变A,B和C,你可以应用访客模式来实现同样的目标."

据我所知,我仍然需要为A,B和C支持访问者(accept()例如,有一个方法).

我的问题是我完全没有可能改变A,B和C.我只是从外国图书馆获得Car对象并且必须调用wash()特定于卡车,赛车和公共汽车的方法.

我想我还需要一个if-else-ifinstanceofs 的结构.我对吗?

java visitor

10
推荐指数
1
解决办法
7130
查看次数

堆栈跟踪中的Python函数的名称

在Python2和Python3中,在堆栈跟踪__name__中没有使用函数,而是使用原始名称(后面指定的名称def).

考虑这个例子:

import traceback

def a():
    return b()

def b():
    return c()

def c():
    print("\n".join(line.strip() for line in traceback.format_stack()))

a.__name__ = 'A'
b.__name__ = 'B'
c.__name__ = 'C'

a();
Run Code Online (Sandbox Code Playgroud)

输出是:

File "test.py", line 16, in <module>
    a();
File "test.py", line 4, in a
    return b()
File "test.py", line 7, in b
    return c()
File "test.py", line 10, in c
    print("\n".join(line.strip() for line in traceback.format_stack()))
Run Code Online (Sandbox Code Playgroud)

为什么这样?如何更改堆栈跟踪中使用的名称?__name__那么使用的属性在哪里?

python metaprogramming

10
推荐指数
1
解决办法
773
查看次数

标签 统计

java ×1

metaprogramming ×1

perl ×1

python ×1

visitor ×1