首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我对Perldata示例的理解

我对Perldata示例的理解
EN

Stack Overflow用户
提问于 2011-12-22 20:37:27
回答 3查看 81关注 0票数 1

Perldata给出了以下示例。

代码语言:javascript
复制
$field = $query->radio_group(
  name => 'group_name',
  values => ['eenie','meenie','minie'],
  default => 'meenie',
  linebreak => 'true',
  labels => \%labels
);

我对这个例子的理解是,“radio-group”被用作散列“query”的关键字。这个关键字“radio-group”本身是一个散列引用,包括name=‘group_name’等等。此外,这个由“radio_group”标识的散列引用被分配给$field。如果我的理解有误,请纠正我。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-12-22 20:41:06

$query->radio_group是一个方法调用。

在这个特定的示例中,使用包含给定键-值对的散列在对象实例$query上调用该方法。

它就像写了下面的代码一样:

代码语言:javascript
复制
my %tmp = (
    name => 'group_name',
    values => ['eenie','meenie','minie'],
    default => 'meenie',
    linebreak => 'true',
    labels => \%labels
);

$field = $query->radio_group(%tmp);

这应该清楚地表明,散列参数集独立于$query本身。

然后将该方法调用的结果赋值给$field

票数 4
EN

Stack Overflow用户

发布于 2011-12-22 21:23:05

这是从object $query对"radio_group“方法的调用。这里没有哈希,只有一堆用逗号和胖逗号(=>)分隔的参数对。来自perlop:

=>运算符是逗号的同义词,不同之处在于,如果左操作数以字母或下划线开头且仅由字母、数字和下划线组成,则它会导致左操作数被解释为字符串。这包括可能被解释为运算符、常量、单个数字v字符串或函数调用的操作数。如果对此行为有疑问,可以显式引用左操作数。否则,根据上下文,=>运算符的行为与逗号运算符或列表参数分隔符完全相同。

票数 4
EN

Stack Overflow用户

发布于 2011-12-22 20:48:42

这相当于这样写:

代码语言:javascript
复制
my %params = (
  name => 'group_name',
  values => ['eenie','meenie','minie'],
  default => 'meenie',
  linebreak => 'true',
  labels => \%labels
);

$field = radio_group( $query, %params );

所以radio_group根本不是一个散列键,而是一个子例程/方法/函数。

说明问题的迹象是:

radio_group之后

  • []{}的缺失,用于表示数组索引和散列键
  • () parens的存在
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8603955

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档