сеансы в синатре и создание хеша похожи? - PullRequest
1 голос
/ 01 октября 2019

Я создаю сеанс, у меня есть такой код

# 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

, так в чем же разница?

1 Ответ

2 голосов
/ 01 октября 2019

Я не уверен, спрашиваете ли вы о квадратных скобках или вас интересует, как Синатра использует значение 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"
...