Por que você pode importar um pacote * depois * usando seu conteúdo em uma função?

Estou no MATLAB R2014b e tenho uma pergunta que ilustrarei com o exemplo a seguir.

O MWE pode ser feito da seguinte forma oufaça o download como um arquivo .zip aqui.

Crie uma pasta de pacote+test no seu caminho com quatro arquivos de função:

+test
    a.m
    b.m
    c.m
    d.m

Conteúdo dea.m:

function a
disp 'Hello World!'

Conteúdo deb.m:

function b
a

Se você correrb na linha de comando, você precisará importar otest primeiro pacote (import test.*) ou executetest.b.

Corridab resultará em um erro, pois o escopo da funçãob não contém funçãoa. Nós devemos importá-lo antes que possa ser usado. Para isso eu crieic.m:

function c
import test.*
a

Agora em execuçãoc funciona bem.

Agora minha pergunta. Se eu mudarc.m para (salvo emd.m):

function d
a
import test.*

I.e. o comando de importação é emitidodepois de a chamada para a função de pacotea. Corridad ainda funciona perfeitamente, como se a posição do comando importd.m não importa. A importação parece ter ocorrido antes da chamada para funcionara, Em qued.m acontece na linha antes da importação.

Por que isso acontece. Esse é o comportamento pretendido e quais são seus usos? Como e em que ordem o MATLAB lê um.m arquivar e processá-lo? E mais fora de tópico, mas em geral: como a importação de pacotes é tratada em diferentes idiomas em comparação com o MATLAB, a ordem dos comandos é importante?

Minha conclusão preventiva com base nos comentários: provavelmente é uma prática recomendada usar apenas a função de importação no início do código MATLAB ou próximo a ele. Isso torna claramente visível que o conteúdo importado está disponível em todo o elemento (por exemplo, função). Também evita a suposição incorreta de que, antes da importação, o conteúdo ainda não está disponível ou se refere a algo diferente com o mesmo nome.

questionAnswers(1)

yourAnswerToTheQuestion