Arhn - архитектура программирования

Выберите номер дела в классическом ASP

Как я могу сделать выбор, как показано ниже, в Classic ASP?

<%
Select case aNumber
    case 1 to 2
        a="pizza"
    case 3 to 4
        a="pasta"
    case else
        a="spaghetti"
end select
%>
26.05.2016

  • Возможный дубликат Как реализовать оператор select в VBScript?< /а> 26.05.2016
  • Нет @Lankymart, нет. 26.05.2016
  • Как вы это понимаете? Вы спрашиваете, как выполнить VB.Net синтаксический трюк в VBScript, простой ответ: его не существует, а то, что существует, указано в ответах на этот вопрос. мой ответ здесь не помогает? 26.05.2016
  • @Lankymart, запрашивающий how can I make like путем выборки недопустимого кода, не является дубликатом How do you implement, я думаю. Я называю это поиском обходного пути. 26.05.2016
  • Посмотрите @Kul-Tigin, поиск синтаксиса Select Case в VBScript не займет 5 минут, я пометил это как возможную дубликат, но все же попытался дать ответ, чтобы помочь OP. Как вы знаете, за него уже проголосовали 3 человека, так что кто-то с вами не согласен. 26.05.2016
  • @Lankymart просто уточнил мое мнение с указанием причины, оставил ответ и не подсчитывал голоса. Я согласен, если кто-то не согласен со мной. такое часто бывает :) 26.05.2016
  • Вы понимаете, что классический ASP использует VBScript в качестве механизма сценариев по умолчанию? Если вы хотите использовать что-то еще, вы вызываете директиву @language или блок <script language="..." runat="server">. 26.05.2016
  • Я думаю, что ключ находится между. Изменение заголовка на «Классический ASP» на «VBScript» сделало бы вопрос действительным, не так ли? Этот конкретный вопрос не задан и не отвечает в связанном сообщении. 27.05.2016
  • @bacar это все еще ошибка, если вы измените название или нет, плюс можно ли удалить asp-classic? Это все еще VBScript, так что это все еще дубликат, тот факт, что в вопросе конкретно не упоминается Case value to value, не имеет значения (поскольку такого синтаксиса не существует). Честно говоря, дублирование это или нет, не имеет значения, поскольку ответы все равно были оставлены и за них проголосовали, так что в худшем случае он помечается как дубликат, но все равно остается. 27.05.2016
  • Возможно, это не идеальная формулировка, но из примера кода достаточно ясно, какое поведение хотел бы ОП, и оба ответа, кажется, касаются этого, поэтому тот факт, что «такого синтаксиса не существует», сам по себе кажется неуместным. Разве мы не можем использовать псевдокод в вопросах? Запрещает ли теперь SO вопросы о том, почему код не компилируется из-за того, что мы не можем предоставить образец компилируемого кода? Вопрос явно не в том, как реализовать оператор select в VBScript? Если вы считаете, что есть такой вопрос, как «Есть ли простой синтаксис выбора регистра, который работает для числовых диапазонов, опубликуйте ссылку?» 27.05.2016

Ответы:


1

Указание диапазонов в Select Case Statement относится ко временам VB6, а может и старше. VBA и VB.Net также поддерживаются, но никогда не реализуются в VBScript , странный. Так что вы не можете.

Но есть и другие способы добиться подобных результатов. Обходной путь, как показано ниже, например:

Select Case True 'looking for True
    Case aNumber >= 1 And aNumber <= 2
        a = "pizza"
    Case aNumber >= 3 And aNumber <= 4
        a = "pasta"
    Case Else
        a = "spaghetti"
End Select

или путем расширения с помощью вспомогательной функции:

Function InRange(val, min, max)
    InRange = val >= min And val <= max
End Function

Select Case True 'looking for True
    Case InRange(aNumber, 1, 2)
        a = "pizza"
    Case InRange(aNumber, 3, 4)
        a = "pasta"
    Case Else
        a = "spaghetti"
End Select
26.05.2016
  • Я сам использовал этот подход раньше. 26.05.2016
  • @Lankymart Могу поспорить, что у вас есть вместо десятков вложенных блоков If :/ 26.05.2016
  • Я должен признать, что в качестве быстрого подхода к взлому я предпочитаю Case value, value, .... Очевидно, что если вы имеете дело с большими диапазонами, этот подход лучше. 26.05.2016

  • 2

    Вы не можете, но есть обходной путь

    <%
    Dim aNumber: aNumber = 1
    Dim a
    
    Select case aNumber
    Case 1, 2
      a = "pizza"
    Case 3, 4
      a = "pasta"
    Case Else
      a = "spaghetti"
    End Select
    
    Call Response.Write(a)
    %>
    

    Выход:

    pizza
    

    Это может выглядеть так, как описано выше, но это не работает так же, например, если мы хотим изменить 1 to 2 на 1 to 3 для первого Case;

    <%
    Dim aNumber: aNumber = 2
    Dim a
    
    Select case aNumber
    Case 1, 3
      a = "pizza"
    Case 4
      a = "pasta"
    Case Else
      a = "spaghetti"
    End Select
    
    Call Response.Write(a)
    %>
    

    Выход:

    spaghetti
    

    Мы не получаем pizza, потому что Case должен включать все параметры, он не работает на основе диапазона, поэтому для его работы необходима следующая модификация;

    Case 1, 2, 3
    

    Выход:

    pizza
    

    Полезные ссылки

    26.05.2016
  • Проблема в том, что если aNumber равно 2,312423? 27.05.2016
  • @Martha, если речь идет о десятичных дробях, то это, очевидно, нехорошо, и подход Кул-Тигина был бы лучше, но в равной степени он не сработал бы, если бы вы прошли диапазон дат, но эй, я не осознавал, что ОП идет так глубоко. Это проблема с посредственными вопросами, которые открыты для интерпретации из-за слабых усилий, которые приложил ОП. Честно говоря очень расстраивает. 27.05.2016
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..