子過程左值屬性

2021-07-11 23:03:49 字數 905 閱讀 1292

除非你定義子過程返回乙個 左值,否則你你不能從子過程中返回乙個可以修改的標量值:

[root@wx03 test]# cat t20.pl

my $val;

sub canmod:lvalue

sub nomod

canmod() = 5; # 給 $val 賦值為 5

#nomod() = 5; # 錯誤

print "\$val is $val\n";

print "1111111111111\n";

print &canmod;

print "\n";

[root@wx03 test]# perl t20.pl

$val is 5

1111111111111

5修改子程式的返回值

如果你正傳遞引數到乙個有 左值 屬性的子過程,你一般會使用圓括弧來防止歧義:

[root@wx03 test]# cat t20.pl

my $val;

sub canmod:lvalue

sub nomod

canmod($x) = 100; # 給 $val 賦值為 5

#nomod() = 5; # 錯誤

print "\$val is $val\n";

[root@wx03 test]# perl t20.pl

$val is 100

具有左值屬性的方法呼叫在 不傳送任何引數時也能省

略圓括弧:

$obj->canmod = 5;

12.7.6 新技巧

package critter;

sub new ; # 覆蓋預設。

bless $self, $class;

}su

左值 右值 左值引用 右值引用

2015 06 01 15 07 404人閱讀收藏 舉報 c 11 5 一 c 中的左值和右值 誤區 左值位於等號左邊,右值位於等號右邊。c 11中的定義 左值表示式表示的是乙個物件的身份 在記憶體中的位置 而右值表示式表示的是物件的值 內容 左值和右值都是針對表示式而言的,左值是持久的,右值是短暫...

左值 左值引用 右值 右值引用

1 左值和右值的概念 左值是可以放在賦值號左邊可以被賦值的值 左值必須要在記憶體中有實體 右值當在賦值號右邊取出值賦給其他變數的值 右值可以在記憶體也可以在cpu暫存器。乙個物件被用作右值時,使用的是它的內容 值 被當作左值時,使用的是它的位址。2 引用 引用是c 語法做的優化,引用的本質還是靠指標...

左值 左值引用 右值 右值引用

1 左值和右值的概念 左值是可以放在賦值號左邊可以被賦值的值 左值必須要在記憶體中有實體 右值當在賦值號右邊取出值賦給其他變數的值 右值可以在記憶體也可以在cpu暫存器。乙個物件被用作右值時,使用的是它的內容 值 被當作左值時,使用的是它的位址。2 引用 引用是c 語法做的優化,引用的本質還是靠指標...