Что Ruby эквивалентен для встроенной “zip” Python?

Согласно моему опыту, просто хранят токен в localStorage.

localStorage :

может хранить информацию до 5 МБ. Вам не нужно спрашивать у пользователя разрешения на сохранение токена в localStorage.

Единственная проблема заключается в том, поддерживает ли целевое устройство API-интерфейс localStorage.

Проверьте здесь: https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage

Широко поддерживается. Но по моему опыту, если у вас есть приложение ios, и в этом приложении есть html-страница, которая просит пользователя сохранить токен (также называемый webview), API localStorage не может быть распознан и выдает ошибку.

Решение заключается в том, что я просто помещаю токен в URL и каждый раз передаю его. В веб-просмотре URL не виден.

Cookie:

Это очень старый стиль для хранения информации локально. Хранение в cookie относительно невелико, и вам необходимо запросить разрешение пользователя для сохранения токена в cookie.

Файлы cookie отправляются с каждым запросом, поэтому они могут ухудшить производительность (особенно для мобильных соединений для передачи данных). Современные API для клиентского хранилища - это API веб-хранилища (localStorage и sessionStorage) и IndexedDB. ( https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies )

Не хранить токен в sessionStorage или redux.

Данные, сохраненные в sessionStorage, будут потеряны, если вкладка закрыта. Если пользователь случайно закрыл вкладку, токен теряется, и сервер не сможет идентифицировать текущего пользователя. Токен, сохраненный в redux, не отличается от других js-файлов. Излишнее хранилище - это просто еще один JS-файл информация, сохраненная в избыточном коде, теряется при каждом обновлении страницы.

В заключение,

большую часть времени токен сохраняется в localStorage, если используется современный стиль. В определенных сценариях вы можете хранить токен в cookie и иногда помещать его в URL. Но никогда не храните в сессии.

Надеюсь, это поможет.

16
задан Eric Naeseth 4 November 2008 в 21:58
поделиться

3 ответа

Ruby имеет функцию zip:

[1,2].zip([3,4]) => [[1,3],[2,4]]

таким образом, Ваш пример кода на самом деле:

a.zip(b).all? {|pair| pair[0] === pair[1]}

или возможно более кратко:

a.zip(b).all? {|a,b| a === b }
26
ответ дан 30 November 2019 в 21:46
поделиться

Могли Вы не делать:

a.eql?(b)

Отредактированный для добавления примера:

a = %w[a b c]
b = %w[1 2 3]
c = ['a', 'b', 'c']

a.eql?(b) # => false
a.eql?(c) # => true
a.eql?(c.reverse) # => false
0
ответ дан 30 November 2019 в 21:46
поделиться

Это от рубиновой спецификации:

it "returns true if other has the same length and each pair of corresponding elements are eql" do
    a = [1, 2, 3, 4]
    b = [1, 2, 3, 4]
    a.should eql(b)
    [].should eql([])
end

Таким образом, Вы должны, это должно работать на пример, который Вы упомянули.

Если Вы не используете целые числа, но пользовательские объекты, я думаю, что необходимо переопределить eql?.

Спецификация для этого метода здесь:

http://github.com/rubyspec/rubyspec/tree/master/1.8/core/array/eql_spec.rb

-2
ответ дан 30 November 2019 в 21:46
поделиться