La differenza tra ? e /; [duplicare]
Sep 02 2020
Posso fare quanto segue
Cases[Range@10, x_ /; OddQ[x]]
Ma perché non posso fare al x_?OddQ[x]posto di _?OddQquanto segue?
Cases[Range@10, x_ ? OddQ[x]]
In generale, sono confuso con l'utilizzo di ?e /;.
modificare
Dopo aver letto i commenti e le risposte esistenti, ho capito ora che ha ?bisogno di una funzione. Tuttavia, ancora mi ha confuso, quando preferiamo ?a /;e viceversa?
Risposte
2 wuyudi Sep 02 2020 at 15:13
Se dovresti usare OddQ[x]
Cases[Range@10, x_?(x \[Function] OddQ[x])]
modificare
Grazie al commento per averlo segnalato, l' xin (x \[Function] OddQ[x])è irrilevante rispetto al primo x, puoi sostituirlo con eventuali altre variabili.
In altre parole, (x \[Function] f[x])== Function[x,f[x]]== f[#]&==f
Alittlemouseonthepampas Sep 02 2020 at 15:00
È necessario eseguire questa operazione per risolvere questo problema:
Cases[Range@10, x_?(OddQ[#] &)]
Cases[Range@10, x_?(OddQ)]
Potresti avere confuso il pattern matching e le funzioni di giudizio condizionale.