&
Meta-Function (Alternatif Giriş / Çıkış Özellikleri)
Bir işleve iletilecek girdi bağımsız değişkenlerinin sayısını belirtmenin geleneksel yolu $
meta işlevi kullanmaktır
2$: % Two-input version of :
Benzer şekilde, çıktı bağımsız değişkenlerinin sayısını belirlemek için, çıktı bağımsız değişkenlerinin #
sayısını belirten meta işlevini kullanabilirsiniz ,
2#S % Two-output version of sort
Eğer bir numara geçmesi halinde ya da daha büyük bir işlev için tanımlanan çıkış bağımsız değişken sayısı, sadecemod(N, numberOfOutputs) + 1
çıkış temin edilmektedir.
4#S % Get only the second output of sort
Ayrıca #
yalnızca belirli çıktı bağımsız değişkenlerini almak için girdi olarak mantıksal bir dizi belirtebilirsiniz .
TFT#u % Three output version of unique and discard the second output
Bu giriş / çıkış özelliklerinin tümü kullanışlıdır, ancak bayt sayınızı çok hızlı bir şekilde artırır. Bununla başa çıkmak &
için MATL , 17.0.0 sürümünde meta işlevi tanıttı . Bu &
meta işlev, bir işlev için belirli bir girdi veya çıktı belirtimi için kısayol görevi görür. Bunun ne anlama geldiğini görelim.
Yukarıdaki örneğimizde, iki girişli sürümünü kullanmak istedik :
(eşit aralıklı değerlerin bir vektörünü oluşturur). Giriş argüman varsayılan sayısı iken :
, IS 1
(bir dizi oluşturur [1...N]
), öyle çok bir kullanıcı ikinci girişi gerektirir aralığının başlangıç değeri belirtmek isterim ortak. Bu yüzden için bir kısayol olarak :
tanımladık .&
2$
10 % Push 10 to the stack
12 % Push 12 to the stack
2$: % Create an array: [10, 11, 12]
Şimdi bir bayt tasarrufu , aşağıdaki olur !
10 12 &:
Alternatif argüman sayısının ne olduğunu nasıl belirleyebiliriz?
&
Çevirilen giriş / çıkış belirtimi , bayt tasarrufunu optimize edebileceğimiz şekilde işleve özeldir .
Her işlev için yardım açıklamasının giriş / çıkış bağımsız değişkeni bölümü, bu alternatif giriş / çıkış sayısının (varsa) ne olduğunu belirtmek üzere güncellenmiştir. Olası giriş veya çıkış bağımsız değişkenleri aralık olarak görüntülenir ve her biri için varsayılan değerler parantez içinde gösterilir. İkame edilebilen giriş / çıkış özellikleri parantez içindeki karakterden &
sonra /
gösterilir.
İşte yardım açıklamasının giriş / çıkış bağımsız değişkeni bölümü :
+- Min-Max range of # of inputs
| +----- Alt. Default # of inputs
| |
V V
1--3 (1 / 2); 1 <--- Possible / Default # of outputs
^
|
Default # of inputs
&
Her bir işlev için ne anlama geldiğini nasıl belirlediniz ?
Çok dikkatli. StackExchange API kullanarak, bir PPCG sınamasında kullanılmış olan tüm MATL cevaplarını indirebildik. Yanıtların her birini ayrıştırarak, her bir giriş / çıkış özelliğinin her işlev için ne sıklıkta kullanıldığını belirleyebildik. Bu bilgileri kullanarak, &
meta-fonksiyonun her fonksiyon için temsil etmesi gereken girdi / çıktı spesifikasyonunu objektif olarak belirleyebildik . Bazen açık bir kazanan yoktu, bu yüzden birçok fonksiyon &
tanımlanmadı.
İşte kullandığımız komut dosyası (maalesef MATL değil MATLAB ile yazılmıştır ).
Ve burada bir olan histogram örneği arasında $
/ #
kullanım