Perl 板


LINE

※ 引述《drive55555 (蛇咬)》之铭言: : 我去看了,可是在照我还是不太懂, : 用my这个关键字来定义你自己所需要的区域变数?? : 这是什麽意思? : 可以帮忙解释一下吗?谢谢! 首先我假设你对程式的结构有基本概念 起码我相信你知道副程式 (或自订函式) 是什麽 所谓的区域变数 指的是在某特定区块内 才可以被程式存取的变数 所谓的区块 (block) 通常是以一个副程式为作为单位 说的更通俗点就是在{与}之间 因此当然也可以是一个回圈内 使用区域变数的目的 在於减少程式出错的机会 提高程式可读性 并使程式方便维护 就如同一个公司各部门都可以有同样的器材 但是上面都会标记属於哪个部门一样意思 这样彼此就不会搞混 程式中也是如此 不同的副程式中有同样名称的变数但不会彼此混淆 ↑尤其常常有许多副程式都在处理相同资料的时候... 最容易有使用的变数名称都相同的情况 自然程式的可读性跟维护性就大大提高了 这也是写程式基本的小技巧 my的语法有以下几种写法: my $var; my ($var1, $var2, $var3); my @array; my ($var, @array, %hash); 甚至 foreach my $z (@array) { # $z只在foreach回圈中可存取 do anything... } for (my $i; $i<=10; $i++) { # $i只在for回圈中可存取 do something... } while (my $x > 0) { # $x只在while回圈中可存取 do allthing... } 习惯上附程式开头都会宣告该副程式内的区域变数 例如说: my $myvar = 1; # 在整个程式内都可以被存取,因为主程式本身就是一个大区块 # 另外就所自己所知与经验,my宣告的变数无法跨档案 # 因为程式所在的档案本身也算一个区块 # 要宣告跨档案全域变数请用our # 但如果副程式内有相同名称的区域变数,则区域变数优先 print '全域变数值=', $myvar; sub mysub { my $myvar = 2; # 在这边$myvar是区域变数 # 因此存取时优先於全域变数$myvar print '区域变数值1=', $myvar; } mysub(); sub mysub2 { my $myvar = 3; print '区域变数值2=', $myvar; } mysub2(); print '全域变数值2=',$myvar; 结果就如你所想 全域变数值=1 区域变数值1=2 区域变数值2=3 全域变数值=1 彼此互不相干 在sub外的$myvar就如同是公用白板 每个人都可以写入抹除 mysub()内的$myvar就如同私人办公桌上的白板 只有座位上的人可以抹写 因此如果有一个程式必须在很多副程式内处理类似资料 自然就会有变数名称相似甚至相同的问题 如果不使用my宣告各副程式的区域变数 而共用一开始宣告的全域变数 很容易发生无法预料的後果 不知道这样说你有比较了解吗? 或许解释的不是很好 毕竟我不是科班出身 perl也是自修的 有错误疏漏的地方也还请各位板友指教 -- TEAM SENNHEISER TEAM STAX TEAM PHILIPS --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 60.244.41.15 ※ 编辑: johnnycgi 来自: 60.244.41.15 (09/11 07:37) ※ 编辑: johnnycgi 来自: 60.244.41.15 (09/13 12:57)







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:BabyMother站内搜寻

TOP