local和this的使用和理解
以如下代码为例:
class c1;
rand integer x;
endclass
class c2;
integer x;
integer y;
task do_it(c1 f, integer x, integer z);
int result;
result=f.randomize() with{x<y+z} //这里没有;
randomize with( )中的x,根据就近原则,指的是被随机化的f中的x,即c1
中的x;改成this.x也是c1中的x。
c2::x不能表示c2中的x,因为默认class中的变量都是automatic类型,而::只能用于static类型变量。
若改为local::x,则此时根据就近原则,会在当前文本中寻找x,即task中寻找。那么此时的x指的是传入的默认参数x。
若改成local::this.x,则此时的x就指的是c2中的x。