Gunakan eval
!
Terinspirasi oleh jawaban Luis Mendo di sini .
Dalam banyak kasus, fungsi anonim lebih pendek daripada membuat skrip yang membutuhkan satu atau lebih panggilan input('')
. Kelemahannya adalah loop dan modifikasi variabel (seperti menukar dua elemen dalam sebuah matriks) tidak mungkin rumit.
Dengan eval
, Anda dapat mengambil input seperti yang Anda lakukan dengan fungsi anonim normal, dan menjalankan skrip seperti yang Anda lakukan dengan skrip normal:
Pertimbangkan ini :
c=(i=@input)('');N=i('');A=i('');for C=c,A(flip(k))=A(k=[x=find(A==C),N^2+1-x]);end,A
Dibandingkan dengan ini:
@(c,N,A)eval('for C=c,A(flip(k))=A(k=[x=find(A==C),N^2+1-x]);end,A')
Kode identik, tetapi bagian input jauh lebih pendek.
Ini juga dapat digunakan untuk memodifikasi variabel input, seperti ini (kredit untuk Luis Mendo untuk ini!):
f(x)eval('x([1,4])=x([4,1])`;