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])`;