Вернуть более одного значения из функции

function vbscript asp-classic

3490 просмотра

2 ответа

ОБНОВЛЕНИЕ: это функция WIP.

<%
    Function ReturnTwoValues(Data)

        If Data= Now() Then
            Var1= "ABC"
            Var2= "000"
        Else
            Var1= "CDE"
            Var2= "111"
        End If

        ReturnTwoValues = Array(Var1, Var2)

    End Function

    a = ReturnTwoValues(Data)
    Value1= a(0)
    Value2= a(1)
%>

Теперь я сомневаюсь: как я могу вызвать функцию? Если я это сделаю Response.Write Value1и Response.Write Value2смогу получить значение, но сначала мне нужно будет передать параметр. Что-то вроде ReturnTwoValues(Now()), но если я сделаю это, как я смогу получить первое и второе значение?


ОРИГИНАЛЬНЫЙ ВОПРОС:

У меня есть эта псевдо-функция и я хотел бы иметь возможность вернуть значение из Variable1и Variable2:

<%
    Today= Now()

    Function TellsMeTheTime(Date_Field)
        If IsNull(Date_Field) = False Or Date_Field <> "" Then
            DaysAmount= DateDiff("d", Date_Field, Today)
            Select Case True
                Case DaysAmount = 0
                    Variable1 = "warning"
                    Variable2 = "text1"
                Case DaysAmount > 1
                    Variable1 = "danger"
                    Variable2 = "text2 " & DaysAmount & " text3"
                Case DaysAmount = -1
                    Variable1 = "warning"
                    Variable2 = "text4"
                Case DaysAmount = -2, -3, -4, -5, -6, -7
                    Variable1 = "warning"
                    Variable2 = "text5 " & Right(DaysAmount, Len(DaysAmount) - 1) & " text6"
                Case DaysAmount <= -8
                    Variable1 = "success"
                    Variable2 = "text7 " & Right(DaysAmount, Len(DaysAmount) - 1) & " text8"
                Case DaysAmount = ""
                    Variable1 = "danger"
                    Variable2 = "text9 " & DaysAmount & " text10"
                Case Else
                    Variable1 = "warning"
                    Variable2 = "text11 " & Right(DaysAmount, Len(DaysAmount) - 1) & " text12"
            End Select
        Else
            Variable1 = "danger"
            Variable2 = "text12"
        End If
    End Function
%>

Как я могу это сделать?

Автор: Khrys Источник Размещён: 12.11.2019 09:39

Ответы (2)


4 плюса

Решение

Передайте обратно массив:

Function ReturnTwoValues(Date_Field)
    ' Do some date testing using Date_Field and then return the proper values...
    ReturnTwoValues = Array("hello", "world")
End Function

a = ReturnTwoValues(#7/7/2014#)
WScript.Echo a(0)    ' ==> "hello"
WScript.Echo a(1)    ' ==> "world"

Или воспользуйтесь тем, что переменные передаются по ссылке в VBScript:

Sub ModifyTwoValues(Date_Field, returnOne, returnTwo)
    ' Do some date testing using Date_Field and then return the proper values...
    returnOne = "hello"
    returnTwo = "world"
End Sub

ModifyTwoValues #7/7/2014#, var1, var2
WScript.Echo var1    ' ==> "hello"
WScript.Echo var2    ' ==> "world"
Автор: Bond Размещён: 07.07.2014 05:09

0 плюса

Простые обходные пути:

  1. Использовать массив или

  2. Используйте объект словаря.

Вот более ранний вопрос StackOverflow, который имеет полное изложение: QTP: Как я могу вернуть несколько значений из функции

Автор: Bret Размещён: 07.07.2014 04:36
Вопросы из категории :
32x32