Playbook de verificação de conexão

Este documento mostra maneiras de usar as verificações de conexão.

Exemplos de valor

Ao definir verificações de conexão para entradas e saídas, geralmente é preciso pensar nas verificações como tipos de representação.

As verificações de entrada precisam incluir todos os "tipos" aceitos, e as verificações de saída precisam incluir exatamente o que elas "retornam".

Aceitar um único tipo

No caso mais básico, em que você quer criar um bloco que "aceita" ou "retorna" um tipo, é necessário incluir esse tipo na verificação de conexão.

um bloco de valor que aceita um único tipo

Aceitar vários tipos

Para criar um bloco que "aceita" vários tipos, é necessário incluir todos os tipos aceitos na verificação de conexão da entrada.

um bloco de valor que aceita vários tipos

Por convenção, se uma saída pode ser às vezes aceita em várias situações (por exemplo, se você permitir que números sejam usados como strings), a saída precisa ser mais restritiva, e as entradas precisam ser mais permissivas. Essa convenção garante que as saídas não se conectem onde não há suporte.

Aceitar qualquer tipo

Para criar um bloco que "aceita" qualquer tipo, defina a verificação de conexão da entrada como null.

um bloco de valor que aceita qualquer tipo

Subtipos de retorno

Para criar um bloco que "retorna" um subtipo, é necessário incluir o tipo e o supertipo na verificação de conexão da saída.

um bloco de valor que retorna o tipo e o supertipo

No caso de subtipos, é possível ter várias verificações em uma verificação de saída, porque o bloco sempre "retorna" os dois tipos.

Retornar tipos parametrizados

Para criar um bloco que "retorna" um tipo parametrizado, é necessário incluir a versão parametrizada e a não parametrizada na verificação de conexão da saída.

Dependendo da rigidez da linguagem do bloco, você também pode incluir as variações do tipo.

um bloco de valor que retorna o tipo parametrizado e o não
parametrizado

Assim como nos subtipos, é possível ter várias verificações em uma verificação de saída neste caso, porque o bloco sempre "retorna" os dois tipos.

Exemplos de pilha ou declaração

Há algumas maneiras comuns de os desenvolvedores definirem verificações para conexões anteriores e seguintes. Normalmente, pense nelas como uma restrição à ordem dos blocos.

As próximas conexões precisam incluir quais blocos devem seguir o atual, e as conexões anteriores precisam incluir o que o bloco atual "é".

Manter os blocos em ordem

Para criar um conjunto de blocos que se conectam em uma ordem definida, é necessário incluir quais blocos devem seguir o atual na próxima verificação de conexão e o que o bloco atual "é" na verificação de conexão anterior.

blocos de instrução que têm uma ordem forçada

Permitir muitos blocos intermediários

Para criar um conjunto de blocos ordenados que permitam muitos blocos intermediários, é necessário incluir pelo menos uma entrada da verificação de conexão anterior do bloco intermediário na próxima verificação de conexão do bloco intermediário. Isso permite que o bloco seja seguido por mais dele mesmo.

blocos de instrução que permitem muitos blocos intermediários

Não permitir blocos intermediários

Para criar um conjunto de blocos ordenados em que os blocos do meio são opcionais, é necessário incluir pelo menos uma entrada da verificação de conexão anterior do bloco do meio e da verificação de conexão anterior do último bloco na próxima verificação de conexão do primeiro bloco. Isso permite que o primeiro bloco seja seguido por um bloco do meio ou um último bloco.

blocos de instrução que não permitem blocos intermediários

Pilhas de “ou”

Para criar um bloco que só pode ser seguido por blocos de um grupo ou de outro, faça o seguinte:

  1. É necessário incluir pelo menos uma entrada das verificações de conexão anteriores de ambos os grupos na próxima verificação de conexão do primeiro bloco.

  2. É necessário definir as próximas verificações de conexão dos grupos para incluir apenas valores que estão nas verificações de conexão anteriores. Assim, elas só podem ser seguidas por blocos do mesmo grupo.

blocos de instrução que podem ser seguidos por vários de um tipo de bloco ou
vários de outro, mas não os dois