gpt4 book ai didi

scope - sinatra 中的持久变量

转载 作者:行者123 更新时间:2023-12-04 06:32:48 25 4
gpt4 key购买 nike

假设我有一个 Sinatra 应用程序,它只是打印出 0-9 的随机数:

get '/' do
rand(10)
end

我想确保应用程序不会打印出与上次相同的数字(因此它不是真正随机的——无论如何,这只是一个玩具示例):
# I want to do something like this... This code doesn't work.
prev_rand = nil
get '/' do
curr_rand = rand(10)
while prev_rand and curr_rand == prev_rand
curr_rand = rand(10)
end
prev_rand = curr_rand
curr_rand
end

我该怎么做?使用上面的例子并不完全有效,因为 prev_randget '/'块是一个局部变量(与块外的不同),因此更改其值不会持续存在。

(我不太了解 Sinatra 范围。)

最佳答案

您可以将“prev_rand”存储为设置,这是一个应用程序级变量,可通过“设置”对象在请求上下文中访问:

configure do
set :prev_rand, nil
end

get '/' do
begin
curr_rand = rand(10)
end while curr_rand == settings.prev_rand
set :prev_rand, curr_rand
curr_rand
end

更多信息: http://www.sinatrarb.com/configuration.html

关于scope - sinatra 中的持久变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5188211/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com