In aptitude è possibile esprimere alcune ricerche particolarmente
complesse usando i bersagli espliciti. Nelle normali
espressioni di ricerca, non c'è modo di fare riferimento al pacchetto o alla
versione che viene testata in quel momento. Per esempio, supponendo che si
desideri cercare tutti i pacchetti P che
dipendono da un secondo pacchetto Q che a sua
volta raccomanda P, ovviamente si deve iniziare
con un termine . Il termine all'interno di
?depends(...)..., però, deve in qualche modo selezionare i pacchetti
che sono identici a quelli che stanno venendo testati da
. Quando più sopra si è descritto l'obiettivo
desiderato, si è risolto questo problema dando un nome ai pacchetti,
chiamandoli ?dependsP e Q; i
termini con bersagli espliciti fanno esattamente la stessa cosa.[17]
Un bersaglio esplicito viene introdotto dal termine ?for:
Questo si comporta esattamente come modello, ma
si può usare variabile all'interno di
modello per riferirsi al pacchetto o alla
versione la cui corrispondenza con modello sta
venendo testata. Si può usare variabile in due
modi:
Il termine ?= trova corrispondenza esattamente con il pacchetto o la
versione indicati dalla variabile data. Specificatamente: se il termine
?for corrispondente è limitato ad una particolare versione, allora
?= trova corrispondenza o con quella versione (se ?= è limitato)
o con tutto il pacchetto; altrimenti trova corrispondenza con qualsiasi
versione del pacchetto.
Per un esempio su come usare ?=, vedere Esempio 2.2, «
Uso del termine ?=.
».
Il termine trova corrispondenza con
qualsiasi pacchetto o versione se il valore di
?bind(variabile,
modello)variabile fa corrispondenza con
modello.
Per termini in stile ?, è disponibile una forma
abbreviata. L'espressione
può essere sostituita da
?bind(variabile,
?termine[(argomenti)])?.
variabile:termine(argomenti)
Per un esempio su come usare ?bind, vedere Esempio 2.3, «Uso del termine ?bind».
[17]
I lettori attenti avranno notato che questo è essenzialmente un modo per
indicare esplicitamente la variabile nei λ-termini corrispondenti al
termine. Un termine tipico ha la forma «λ
x . name-equals(x,
modello)»; fornirgli un bersaglio
esplicito rende x visibile nel linguaggio di
ricerca.