禁止代码示例(我希望能够编写):
isWaiting :: Eq a => a -> PriorityQueue a -> Bool
isWaiting x EmptyQueue = False
isWaiting x (Push x y p) = True
isWaiting x (Push z y p) = isWaiting x p
Run Code Online (Sandbox Code Playgroud)
相同的逻辑,但有效的变体:
isWaiting :: Eq a => a -> PriorityQueue a -> Bool
isWaiting x EmptyQueue = False
isWaiting x (Push z y p) = if x == z then True else isWaiting x p
Run Code Online (Sandbox Code Playgroud) 在下面的代码中,按照预期生成了一个随机值:
import random
for i in range(10):
print(random.randint(0,10))
Run Code Online (Sandbox Code Playgroud)
但是,如果我使用函数,这将不起作用:
import random
def f(val: int = random.randint(0,10)):
print(val)
for i in range(10):
f()
Run Code Online (Sandbox Code Playgroud)
为什么第二个代码片段的结果总是相同的数字?我能找到的最相似的问题是这个,但它指的是一种不同的语言(我不掌握)。