怎么
while (
stack.peek() in ops &&
p(stack.peek()) >= 10
) {
str += stack.pop();
}
重写,所以.peek()
每次循环运行时我都调用,但是只定义一次?
我考虑过
const peek = stack.peek();
while (
peek in ops &&
p(peek) >= 10
) {
str += stack.pop();
}
但因为我修改stack
与stack.pop()
while循环中,我猜的价值stack.peek()
是不断变化的每一次,所以我想我必须重新定义循环内的变量,但
let peek = stack.peek();
while (
peek in ops &&
p(peek) >= 10
) {
str += stack.pop();
peek = stack.peek();
}
也似乎有点不对,所以应该像
while (
let peek = stack.peek() &&
peek in ops &&
p(peek) >= 10
) {
str += stack.pop();
}
或者
for (
let peek = stack.peek();
peek in ops && p(peek) >= 10;
peek = stack.peek()
) {
str += stack.pop();
}
考虑while (true)
与一起使用break
:
while (true) {
const peek = stack.peek();
if (!(peek in ops) || p(peek) < 10) break;
str += stack.pop();
}
从理论上讲,您也可以这样做:
while (
(peek => peek in ops && p(peek) >= 10)(stack.peek())
) {
str += stack.pop();
}
但这很丑。大致相当于写
function pop(stack) {
const peek = stack.peek();
return peek in ops && p(peek) >= 10;
}
while(pop(stack)) str += stack.pop();
一for
环是不是一个坏主意要么,并且可以写成:
for (let peek; peek = stack.peek(), peek in ops && p(peek) >= 10; ) {
str += stack.pop();
}
再次避免了重复调用stack.peek()
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句