Функция Выхода возвращает false?

Примерно так (проверено):

Dim questions As MSXML2.IXMLDOMNodeList, question As MSXML2.IXMLDOMNode
Dim genre

Set questions = oXMLFile.SelectNodes("/catalog/query")

For Each question In questions
    genre = ChildValue(question, "genre")
    If Len(genre) > 0 Then
        With eWorkbook.Sheets(genre).Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).EntireRow
            .Cells(1).Value = ChildValue(question, "question")
            .Cells(2).Value = ChildValue(question, "answer")
            .Cells(3).Value = ChildValue(question, "comment")
        End With
    End If
Next question

Утилита для получения значений дочерних узлов:

Function ChildValue(n As MSXML2.IXMLDOMNode, childName As String)
    Dim el, rv
    Set el = n.SelectSingleNode(childName)
    If Not el Is Nothing Then rv = el.nodeTypedValue
    ChildValue = rv
End Function
7
задан MetaGuru 3 April 2009 в 14:42
поделиться

4 ответа

Это корректно с протестом, что в VB имя функции может также быть переменной, которая возвращается. При предыдущей установке этого на истинный это возвратит true.


Более полностью, в VB.Net, если у меня есть булева функция Foo() определенный как так:

Public Function Foo() As Boolean
   '...

... тело той функции имеет подразумеваемую переменную, также названную Foo это соответствует типу возврата функции — Boolean в этом случае, но Object если тип возврата опущен (необходимо использовать Option Strict, который требует типа возврата). Эта подразумеваемая переменная инициализируется для использования значения по умолчанию для того типа.

Если Вам не удается Return значение от функции, ли через Exit Function или просто путем достижения конца, эта подразумеваемая переменная возвращается вместо этого. Поэтому a Boolean функция возвратится False если Вы Exit Function рано не внося другие изменения, потому что это - значение по умолчанию в подразумеваемой переменной, используемой с функцией. Но Вы могли также установить ту переменную на True сначала, если Вы хотели, и затем Exit Function заставил бы это возвращаться True вместо этого.

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

11
ответ дан 6 December 2019 в 10:53
поделиться

Я всегда "Возвращаю True", или "Возвращают False" для выхода из метода вместо оператора выхода.

2
ответ дан 6 December 2019 в 10:53
поделиться

Независимо, если это делает или не (компилятор дает нулевую ссылку, предупреждающую только), необходимо все еще явно возвратить false, если только для удобочитаемости.

3
ответ дан 6 December 2019 в 10:53
поделиться

Пока Вы не установили ту функцию на Истинный перед выходом

2
ответ дан 6 December 2019 в 10:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: