VB Visual Basic  ·  20 вопросов  ·  ~55 мин  ·  ⏱ Таймер 55:00  ·  Лёгкий  · 

Делегаты и lambda-выражения

Тест по теме «Делегаты и lambda-выражения» состоит из 20 вопросов: нужно читать код, сравнивать близкие решения, находить границы применимости правил и разбирать последствия ошибок. Заданий с кодом — 12; после каждого ответа открывается объяснение.

Отвечено: 0 из 20
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. На тест отведено 55 минут; после ответа можно открыть объяснение.
Вопрос 1 из 20
Раздел «Типизированные делегаты»: в примере с Delegate важна не форма записи, а поведение. Какое утверждение его описывает?
Visual Basic / VB.NETVisual Basic · Делегаты и lambda-выражения
Delegate Function Transformer(value As Integer) As Integer
Module Demo
    Function DoubleValue(value As Integer) As Integer
        Return value * 2
    End Function
    Sub Main()
        Dim f As Transformer = AddressOf DoubleValue
        Console.WriteLine(f(3))
    End Sub
End Module
Вопрос 2 из 20
Раздел «Типизированные делегаты»: на ревью предлагают упростить участок с Delegate. Какое замечание защищает поведение программы, а не стиль записи?
Visual Basic / VB.NETVisual Basic · Делегаты и lambda-выражения
Option Strict On
Namespace ReviewCase9_1
    Delegate Function Transformer(value As Integer) As Integer
    Module Demo
        Function DoubleValue(value As Integer) As Integer
            Return value * 3
        End Function
        Sub Main()
            Dim f As Transformer = AddressOf DoubleValue
            Console.WriteLine(f(7))
        End Sub
    End Module
End Namespace
Вопрос 3 из 20
Раздел «Типизированные делегаты»: для участка с Delegate нужен отрицательный тест. Какой контракт стоит проверить, меняя только одно условие?
Visual Basic / VB.NETVisual Basic · Делегаты и lambda-выражения
Option Explicit On
Option Infer On
Namespace BoundaryCase9_1
    Delegate Function Transformer(value As Integer) As Integer
    Module Demo
        Function DoubleValue(value As Integer) As Integer
            Return value * 1
        End Function
        Sub Main()
            Dim f As Transformer = AddressOf DoubleValue
            Console.WriteLine(f(1))
        End Sub
    End Module
End Namespace
Вопрос 4 из 20
Раздел «Типизированные делегаты»: как уменьшить риск дефекта, не подменяя причину запасным значением?
Вопрос 5 из 20
Раздел «Типизированные делегаты»: какой вывод описывает семантику, а не предпочтение в оформлении?
Вопрос 6 из 20
Раздел «Делегаты Action и Func»: что здесь является частью контракта, а не особенностью одного удачного запуска?
Visual Basic / VB.NETVisual Basic · Делегаты и lambda-выражения
Module Demo
    Sub Main()
        Dim write As Action(Of String) = AddressOf Console.WriteLine
        Dim length As Func(Of String, Integer) = Function(text) text.Length
        write(length("visual").ToString())
    End Sub
End Module
Вопрос 7 из 20
Раздел «Делегаты Action и Func»: какое ограничение нельзя убрать только потому, что обычный пример проходит?
Visual Basic / VB.NETVisual Basic · Делегаты и lambda-выражения
Option Strict On
Namespace ReviewCase9_2
    Module Demo
        Sub Main()
            Dim reviewWrite As Action(Of String) = AddressOf Console.WriteLine
            Dim reviewLength As Func(Of String, Integer) = Function(text) text.Length
            reviewWrite(reviewLength("visual").ToString())
        End Sub
    End Module
End Namespace
Вопрос 8 из 20
Раздел «Делегаты Action и Func»: какое правило нельзя считать проверенным одним обычным примером?
Visual Basic / VB.NETVisual Basic · Делегаты и lambda-выражения
Option Explicit On
Option Infer On
Namespace BoundaryCase9_2
    Module Demo
        Sub Main()
            Dim edgeWrite As Action(Of String) = AddressOf Console.WriteLine
            Dim edgeLength As Func(Of String, Integer) = Function(text) text.Length
            edgeWrite(edgeLength("visual").ToString())
        End Sub
    End Module
End Namespace
Вопрос 9 из 20
Раздел «Делегаты Action и Func»: какое решение выдержит не только демонстрационный, но и отказный сценарий?
Вопрос 10 из 20
Раздел «Делегаты Action и Func»: какое обобщение не зависит от случайных деталей показанного примера?
Вопрос 11 из 20
Не запуская фрагмент, выберите объяснение, которое учитывает весь механизм «Лямбда-выражения».
Visual Basic / VB.NETVisual Basic · Делегаты и lambda-выражения
Module Demo
    Sub Main()
        Dim normalize As Func(Of String, String) =
            Function(text)
                Dim trimmed = text.Trim()
                Return trimmed.ToUpperInvariant()
            End Function
        Console.WriteLine(normalize(" vb "))
    End Sub
End Module
Вопрос 12 из 20
Раздел «Лямбда-выражения»: какая претензия к возможной правке относится к поведению программы?
Visual Basic / VB.NETVisual Basic · Делегаты и lambda-выражения
Option Strict On
Namespace ReviewCase9_3
    Module Demo
        Sub Main()
            Dim reviewNormalize As Func(Of String, String) =
                Function(text)
                    Dim reviewTrimmed = text.Trim()
                    Return reviewTrimmed.ToUpperInvariant()
                End Function
            Console.WriteLine(reviewNormalize(" vb "))
        End Sub
    End Module
End Namespace
Вопрос 13 из 20
Раздел «Лямбда-выражения»: что изменится первым при нарушении ключевого допущения этого фрагмента?
Visual Basic / VB.NETVisual Basic · Делегаты и lambda-выражения
Option Explicit On
Option Infer On
Namespace BoundaryCase9_3
    Module Demo
        Sub Main()
            Dim edgeNormalize As Func(Of String, String) =
                Function(text)
                    Dim edgeTrimmed = text.Trim()
                    Return edgeTrimmed.ToUpperInvariant()
                End Function
            Console.WriteLine(edgeNormalize(" vb "))
        End Sub
    End Module
End Namespace
Вопрос 14 из 20
Раздел «Лямбда-выражения»: какое решение выдержит не только демонстрационный, но и отказный сценарий?
Вопрос 15 из 20
Что можно считать надёжным рабочим правилом для раздела «Лямбда-выражения»?
Вопрос 16 из 20
Раздел «Захват переменных»: в примере с actions важна не форма записи, а поведение. Какое утверждение его описывает?
Visual Basic / VB.NETVisual Basic · Делегаты и lambda-выражения
Module Demo
    Sub Main()
        Dim actions As New List(Of Action)
        Dim current = 0
        For i = 1 To 3
            current = i
            actions.Add(Sub() Console.Write(current))
        Next
        actions.ForEach(Sub(action) action())
    End Sub
End Module
Вопрос 17 из 20
После рефакторинга код стал короче. Какое условие по теме «Захват переменных» нельзя потерять?
Visual Basic / VB.NETVisual Basic · Делегаты и lambda-выражения
Option Strict On
Namespace ReviewCase9_4
    Module Demo
        Sub Main()
            Dim reviewActions As New List(Of Action)
            Dim reviewCurrent = 0
            For i = 1 To 4
                reviewCurrent = i
                reviewActions.Add(Sub() Console.Write(reviewCurrent))
            Next
            reviewActions.ForEach(Sub(action) action())
        End Sub
    End Module
End Namespace
Вопрос 18 из 20
Раздел «Захват переменных»: что изменится первым при нарушении ключевого допущения этого фрагмента?
Visual Basic / VB.NETVisual Basic · Делегаты и lambda-выражения
Option Explicit On
Option Infer On
Namespace BoundaryCase9_4
    Module Demo
        Sub Main()
            Dim edgeActions As New List(Of Action)
            Dim edgeCurrent = 0
            For i = 1 To 2
                edgeCurrent = i
                edgeActions.Add(Sub() Console.Write(edgeCurrent))
            Next
            edgeActions.ForEach(Sub(action) action())
        End Sub
    End Module
End Namespace
Вопрос 19 из 20
Раздел «Захват переменных»: как уменьшить риск дефекта, не подменяя причину запасным значением?
Вопрос 20 из 20
Раздел «Захват переменных»: какое правило остаётся верным для современного Visual Basic?

Ответьте на все 20 вопросов, чтобы получить результат

🔗 Встроить тест на свой сайт (iframe) ▼

Скопируйте код и вставьте в любое место на вашем сайте:

Также доступна прямая ссылка на embed-страницу