我不是说这个问题是关于Python与PHP,而是关于语言。我使用Python和PHP作为例子,因为我知道它们。
在Python中,我们可以mytoken = mystring.split(mydelimiter)[1]
访问str.split
返回的列表,而无需将其分配给列表。
在PHP中,我们必须在访问它之前将数组放入内存中,如$mytokenarray = explode($mydelimiter, $mystring); $mytoken = $mytokenarray[1];
中所示。据我所知,不可能像在Python中那样在一个语句中执行此操作。
这种差异背后发生了什么?
答案 0 :(得分:1)
这是语言作者选择制作的设计决策。一般来说(当然并非总是如此)语言越好,语言越慢。例证:Ruby。
答案 1 :(得分:1)
如果您尝试在php中执行此操作
$mytokenarray = explode($mydelimiter, $mystring)[1];
注意到您收到的错误:Parse error: syntax error, unexpected '['
。
这意味着php在尝试解析代码时会感到沮丧,而不是在尝试执行代码时。我怀疑这意味着php的语法(我听说传闻,虽然我真的不知道但是在飞行中生成)表示你不能在statement
或expression
之后加上'['无论他们称之为什么。相反,你可能只能在变量之后加上'['。
这是Python的语法。包含规则trailer: '(' [arglist] ')' | '[' subscriptlist ']' | '.' NAME
的{{3}}从那里,您可以看到trailer
属于atom
,其中也包含[
。你开始觉得它很复杂。
Blah blah blah,长话短说,了解编译器,甚至更好,写一个玩具语言。然后,您将对语言怪癖有很多见解。
答案 2 :(得分:1)
从版本5.4开始,PHP现在可以使用此功能。