sinatra 中的会话和创建哈希是相似的吗?

sessions in sinatra and creating a hash are similar?

我创建了一个会话,我有这样的代码

# sinatra.rb
enable :sessions
get '/foo' do
  session[:message] = 'Hello World!'
  redirect to('/bar')
end

get '/bar' do
  session[:message]   # => 'Hello World!'
end

非常相似
# test.rb
session = Hash.new
session[:message] = 'Hello World!'
puts session

那有什么区别呢?

我不确定你是问方括号还是对 Sinatra 的实现感兴趣 session

如果您问的是方括号:它们只不过是一种方法,您可以在自己的 类 中定义。在这里阅读更多:https://rickcarlino.com/2015/03/26/square_brackets-html.html

从上面提取的一个小例子url:

class FakeCollection
  attr_reader :items

  def initialize
    @items = {}
  end

  def [](index)
    @items[index] || "Not Found"
  end

  def []=(index, value)
    @items[index] = value
  end
end

example = FakeCollection.new

example[:x] = "Hello, world"

example[:x]
# => "Hello, world"