Perl foreach对哈希键的复杂性

use*_*754 3 perl complexity-theory

这段代码的复杂性是什么?

foreach $var (keys %varset) { 
  print "${var}\n";
}
Run Code Online (Sandbox Code Playgroud)

是O(n ^ 2)还是O(n),也就是说,每次迭代还是只调用一次键操作?

cjm*_*cjm 9

这是O(n).当foreach循环开始时,表达式在列表上下文中计算,然后循环遍历该列表.首先,不能保证后续调用keys将以相同的顺序返回键,甚至是相同的键,那么如果重新评估表达式,它将如何确定下一个元素是什么?