字体:  

function的参数列表最后一项为什么不能有逗号?

co63 发表于: 2008-8-27 09:44 来源: PHPChina 开源社区门户

function的参数列表,最后一项的后面不能有一个逗号。
但是如果是一个数组的话,最后一项可以有一个逗号。
这样设计是有什么原因吗?

[ 本帖最后由 co63 于 2008-8-28 08:36 编辑 ]

最新回复

心痛 at 2008-8-27 10:10:42
参数列完了,为什么要再多此一举呢?
wukewei00o at 2008-8-27 10:30:17

QUOTE:

原帖由 co63 于 2008-8-27 02:44 发表
function的参数列表,最后一项的后面不能有一个逗号。
但是如果是一个数组的话,最后一项可以有一个逗号。
这样设计是有什么原因吗?
不好意思,就是这么定义的,要想知道原因,请看底层
co63 at 2008-8-27 11:17:57
如果没有什么特别原因的话
那就反应了php的语法不统一

也就是它所被批评的不规范
laruence at 2008-8-27 11:20:38
这个和语法分析阶段的机制有关系.
laruence at 2008-8-27 11:21:06
在语法分析的时候
array的list可以被展开成
array_pair_list:
        /* empty */
    |   non_empty_array_pair_list possible_comma
;
也就是说,他后面可以有个possible_comma(可能的逗号)

而function的参数列表则不是

所以,这个只是语法分析阶段的一个限制而已

[ 本帖最后由 laruence 于 2008-8-27 11:30 编辑 ]
co63 at 2008-8-27 14:43:51

QUOTE:

而function的参数列表则不是
用这个技术的话,function的参数列表应该也是可以做到的
就相当于所有的参数当做一个数组

难道开发者偷懒?
laruence at 2008-8-27 15:26:33

QUOTE:

原帖由 co63 于 2008-8-27 14:43 发表


用这个技术的话,function的参数列表应该也是可以做到的
就相当于所有的参数当做一个数组

难道开发者偷懒?
我觉得, 不是偷懒, 是没有必要.
我们也是推荐定义array的时候,最后不要写逗号.

但是,如果你写了,那也没有问题.
sun_able at 2008-8-27 16:29:45
个数不一样。
flyfly99 at 2008-8-27 17:08:37
不对的,老版本的php版本最后不能有,的,好像4.x某个版本开始就可以了。
co63 at 2008-8-28 08:42:18

QUOTE:

好像4.x某个版本开始就可以了
我试了,5.2.5版本不可以

讨论没有说到能起关键作用的地方

或许以后某个版本就会支持了
因为我觉得这是一个方便的地方,我可以把函数参数一个写一行,增加新参数时,把上一行复制,修改参数名就可以,而不用考虑逗号的问题
flyfly99 at 2008-8-28 08:59:39
我说数组最后的那个,,4.X有个版本之前是不可以的。好像是后来加的
co63 at 2008-8-28 09:04:12

QUOTE:

原帖由 flyfly99 于 2008-8-28 08:59 发表
我说数组最后的那个,,4.X有个版本之前是不可以的。好像是后来加的
我问的问题的意思就是:为什么数组可以,而function不可以。你说的这个已经是已知条件了。
只想当高手 at 2008-8-30 11:08:43
那你说Japan为什么不能拼成Jiba
co63 at 2008-8-30 16:46:51

QUOTE:

原帖由 只想当高手 于 2008-8-30 11:08 发表
那你说Japan为什么不能拼成Jiba
Jiba可以fuck Japan
Japan不可以fuck Jiba