Nano Hash - криптовалюты, майнинг, программирование

Как выполнить итерацию по массиву, не сбрасывая итератор на 0 при каждом нажатии кнопки?

У меня есть массив для хранения слов. Мне нужно иметь доступ к одному слову каждый раз, когда нажимается кнопка. В следующий раз, когда кнопка нажата, мне нужно иметь доступ к следующему элементу в массиве.

У меня это отлично работало в vb.net, но в asp.net/vb.net моя общедоступная переменная сбрасывается до нуля каждый раз, когда нажимается кнопка, поэтому я каждый раз получаю один и тот же элемент.

Partial Class Residential
    Inherits System.Web.UI.Page

    Public NextNum As Integer

    Private Sub ProducePurpleSentence()

        Dim calltoactionArray(3) As String
        calltoactionArray(0) = "Go!"
        calltoactionArray(1) = "Run!"
        calltoactionArray(2) = "Jump!"
        calltoactionArray(3) = "Yell!"

        PurpleSentence = ""

       'This should reset NextNum to 0 once the last array element is reached.
        If NextNum > calltoactionArray.Length + 1 Then
            NextNum = 0
        Else
        End If

        PurpleSentence = calltoactionArray(NextNum)

       'NextNum should iterate here.        
        NextNum = NextNum + 1

        TxtOutput.Text = PurpleSentence
    End Sub

Private Sub BtnPurpleRedo_Click(sender As Object, e As EventArgs) Handles BtnPurpleRedo.Click
        Call ProducePurpleSentence()
    End Sub

End Class

Мне нужно, чтобы "PurpleSentence" был первым элементом массива calltoactionarray при первом нажатии BtnPurpleRedo, вторым элементом при втором нажатии и так далее. Мне также нужно, чтобы он возвращался к первому элементу после вывода последнего элемента.

05.06.2019

  • В Интернете каждая загрузка страницы похожа на открытие нового приложения. Вам нужно хранить свою переменную в специальном контейнере (например, переменной сеанса) или на самой странице, если вы хотите сохранить значение. 05.06.2019
  • Интернет не имеет состояния, так что вам придется управлять им самостоятельно. Прочтите эту статью для некоторых возможные варианты 05.06.2019
  • небольшое замечание: не должна ли эта строка If NextNum > calltoactionArray.Length + 1 Then быть -1 вместо этого? 06.06.2019
  • Да, AConfusedSimpleton, вы правы. должно быть If NextNum › calltoactionArray.Length - 1 Then 06.06.2019

Ответы:


1

Вы можете сохранять данные между обращениями к странице в «состоянии сеанса». (Есть и другие места, где его можно сохранить, что в некоторых случаях лучше.)

Сначала вам нужно включить состояние сеанса в web.config: добавьте следующее внутри элемента <configuration>:

<system.web>
    <sessionState mode="InProc" cookieless="false" timeout="20">
</system.web>

Затем вы можете использовать его для сохранения вашей переменной:

Private Sub ProducePurpleSentence()

    Dim calltoactionArray = {"Go!", "Run!", "Jump!", "Yell!"}
    Dim nextNum As Integer = 0

    If Session("nextNum") IsNot Nothing Then
        nextNum = DirectCast(Session("nextNum"), Integer)
    End If

    Dim PurpleSentence = calltoactionArray(nextNum)

    nextNum = (nextNum + 1) Mod calltoactionArray.Length
    Session("nextNum") = nextNum

    TxtOutput.Text = PurpleSentence

End Sub
05.06.2019
  • Превосходно. Спасибо. Я попробую. На самом деле я заставил его работать, сохранив nextNum в невидимом текстовом поле, но мне это нравится больше. 06.06.2019
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..