The &
Meta-Function (Alternatif Input / Spesifikasi Output)
Cara tradisional untuk menentukan jumlah argumen input untuk diteruskan ke suatu fungsi adalah dengan menggunakan $
fungsi-meta
2$: % Two-input version of :
Demikian pula, untuk menentukan jumlah argumen output, Anda dapat menggunakan #
fungsi-meta yang menentukan jumlah argumen output,
2#S % Two-output version of sort
atau jika Anda melewati nomor yang lebih besar dari jumlah argumen keluaran ditetapkan untuk fungsi, hanya satu mod(N, numberOfOutputs) + 1
output disediakan.
4#S % Get only the second output of sort
Anda juga dapat menentukan array logis sebagai input untuk #
hanya mengambil argumen output tertentu.
TFT#u % Three output version of unique and discard the second output
Semua spesifikasi input / output ini berguna tetapi mereka menaikkan byte-count Anda dengan sangat cepat. Untuk mengatasinya, MATL memperkenalkan &
fungsi-meta di rilis 17.0.0 . &
Fungsi-meta ini bertindak sebagai pintasan untuk spesifikasi input atau output tertentu untuk suatu fungsi. Mari kita lihat apa artinya itu.
Dalam contoh kami di atas, kami ingin menggunakan versi dua-input dari :
(membuat vektor dengan nilai spasi sama). Sementara jumlah default argumen input :
adalah 1
(membuat array dari [1...N]
), sangat umum bahwa pengguna ingin menentukan nilai awal rentang yang membutuhkan input kedua. Jadi untuk :
, kami telah menetapkan &
sebagai jalan pintas untuk 2$
.
10 % Push 10 to the stack
12 % Push 12 to the stack
2$: % Create an array: [10, 11, 12]
Sekarang menjadi yang berikut, menghemat satu byte !
10 12 &:
Bagaimana kita bisa menentukan berapa jumlah alternatif argumen?
Spesifikasi input / output yang &
diterjemahkan adalah fungsi spesifik sehingga kami mengoptimalkan penghematan byte.
Bagian argumen input / output dari deskripsi bantuan untuk setiap fungsi telah diperbarui untuk menunjukkan apa jumlah input / output alternatif ini (jika ada). Jumlah argumen input atau output yang mungkin ditampilkan sebagai rentang dan nilai default untuk masing-masing ditampilkan dalam tanda kurung. Input / output spec yang dapat diganti dengan &
ditampilkan setelah /
karakter dalam tanda kurung.
Berikut adalah bagian argumen input / output dari deskripsi bantuan untuk :
+- Min-Max range of # of inputs
| +----- Alt. Default # of inputs
| |
V V
1--3 (1 / 2); 1 <--- Possible / Default # of outputs
^
|
Default # of inputs
Bagaimana Anda menentukan apa &
artinya untuk setiap fungsi?
Dengan sangat hati-hati. Dengan menggunakan StackExchange API , kami dapat mengunduh semua jawaban MATL yang pernah digunakan dalam tantangan PPCG. Dengan menguraikan masing-masing jawaban, kami kemudian dapat menentukan frekuensi penggunaan setiap spesifikasi input / output untuk setiap fungsi. Dengan menggunakan informasi ini, kami kemudian dapat mengidentifikasi secara objektif spesifikasi input / output yang &
harus mewakili fungsi-meta untuk setiap fungsi. Terkadang tidak ada pemenang yang jelas, begitu banyak fungsi saat ini tidak &
didefinisikan.
Berikut ini skrip yang kami gunakan (sayangnya ditulis dalam MATLAB dan bukan MATL).
Dan di sini adalah contoh dari histogram dari $
/ #
penggunaan