我想在不使用Perl中的第三个变量的情况下交换两个变量值,例如:
my $first = 10;
my $second = 20;
Run Code Online (Sandbox Code Playgroud)
请建议我如何以简单的方式在Perl中执行此操作.
在这个问题中,据说我可以使用访客模式而不是一堆instanceofs.Jmg说:"如果你不能自由改变A,B和C,你可以应用访客模式来实现同样的目标."
据我所知,我仍然需要为A,B和C支持访问者(accept()例如,有一个方法).
我的问题是我完全没有可能改变A,B和C.我只是从外国图书馆获得Car对象并且必须调用wash()特定于卡车,赛车和公共汽车的方法.
我想我还需要一个if-else-if带instanceofs 的结构.我对吗?
在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__那么使用的属性在哪里?