perl语言中例如local(*queryString)=@_ if @_;是什么意思?星号是什么?中间那个if又是怎么回事?
展开全部
local ( 後来的 my ) , 是指後面的变数将只有效於这个 block ( sub ) , 离开之後便会消失於虚空之中
*var , 是全域的意思, 当你 print 一个 *变数 出来的时候, 你会发现这会变成这个变数, 连同现行的 package 的全称, 即 *main::var 这样的全称.
因为这样的特性, 我们很多时会用 *变数来传递 "引用" (reference) . 如: *hi = \&hello;
无论呼叫 hi, 或者 hello, 实际上都是用 hello() 来处理. 但你给的例子似乎完全没有意思. 因为後面的不是引用. 但如果写成 local(*queryString)=\@_ if @_ ; # 多了一个 \ 在 @ 前
那就会有意思, 这样 *queryString 就可以引用到 @_ 的参数.
@_ 就是传入 sub 的参数, 如
sub hi {
print "Hi! @_"
}
hi ( "Peter ", "Mary ", "Joseph " ) ;
# Hi! Peter Mary Joseph
在 Javascript, Java 或者很多语言入面, 我们会写成这样
if ( condition ) one_statement;
如果 if 後面只有 1 句指令, 就可以不用 { }
perl 也是这个意思, 不过将 if 放在後面, 这使得看上去更像英文.
整句的意思就是:
如果有 @_ , 那就将 *queryString 变成 @_ 的引用
*var , 是全域的意思, 当你 print 一个 *变数 出来的时候, 你会发现这会变成这个变数, 连同现行的 package 的全称, 即 *main::var 这样的全称.
因为这样的特性, 我们很多时会用 *变数来传递 "引用" (reference) . 如: *hi = \&hello;
无论呼叫 hi, 或者 hello, 实际上都是用 hello() 来处理. 但你给的例子似乎完全没有意思. 因为後面的不是引用. 但如果写成 local(*queryString)=\@_ if @_ ; # 多了一个 \ 在 @ 前
那就会有意思, 这样 *queryString 就可以引用到 @_ 的参数.
@_ 就是传入 sub 的参数, 如
sub hi {
print "Hi! @_"
}
hi ( "Peter ", "Mary ", "Joseph " ) ;
# Hi! Peter Mary Joseph
在 Javascript, Java 或者很多语言入面, 我们会写成这样
if ( condition ) one_statement;
如果 if 後面只有 1 句指令, 就可以不用 { }
perl 也是这个意思, 不过将 if 放在後面, 这使得看上去更像英文.
整句的意思就是:
如果有 @_ , 那就将 *queryString 变成 @_ 的引用
展开全部
*表示别名意思是如果函数有传入参数的话给传入参数起个别名
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
换成另一种形式就是:
if(@_)
{
local(*queryString)=@_;
}
if(@_)
{
local(*queryString)=@_;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
指定局部变量queryString以保存函数参数
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询