Extension:Arrays/tr

From MediaWiki.org
Jump to navigation Jump to search
MediaWiki manüel uzantıları
OOjs UI icon advanced.svg
Arrays
Yayın durumu: sabit
Uygulama Ayrıştırıcı işlevi
Açıklama Ayrıştırıcıyı dizi işlevleriyle geliştirir.
Yazar(lar) Li Ding, Jie Bao ve Daniel Werner
Son sürüm 2.2.0 (2019-02-13)
MediaWiki 1.31+
Veritabanı değişiklikleri Hayır
Lisans MIT Lisansı
İndir
README
CHANGELOG

  • $egArraysCompatibilityMode
  • $egArraysExpansionEscapeTemplates
Arrays uzantısını çevirin translatewiki.net adresinde mevcutsa
Kullanım ve sürüm matrisini kontrol edin.
Sorunlar Görevleri aç · Bir hatayı bildir

Arrays uzantısı (eski adıyla ArrayExtension), ayrıştırıcı işlevi için diziler üzerinde çalışan ek bir grup oluşturur.

İşlevler[edit]

Bu uzantı aşağıdaki ayrıştırıcı işlevlerini tanımlar:

Grup İşlevler
Bir dizi oluşturun (benzersiz, sıralama, yazdırma seçenekleriyle) #arraydefine
Bir diziden bilgi çıkarma #arrayprint, #arrayindex, #arraysize, #arraysearch, #arraysearcharray ve #arrayslice
Dizi değiştirme #arrayreset, #arrayunique ve #arraysort
Birkaç dizi arasındaki etkileşim #arraymerge, #arrayunion, #arrayintersect ve #arraydiff
Extension:HashTables kurulu ise, dizi/karma tablo etkileşimi için
#hashtoarray, #arraytohash

Diziler oluşturma[edit]

arraydefine[edit]

Bu işlev, 'delimiter' ile ayrılmış bir 'values' listesi kullanarak bir dizi ('key' ile tanımlanır) oluşturur. Değişkene daha sonra başka fonksiyonlar ile erişilebilir.

Sözdizimi:

{{#arraydefine:key|values|delimiter|options}}

Notlar:

  • values, delimiter ile ayrılmış dizelerin listesidir
  • Ortaya çıkan dizi bir dizeler dizisidir.
  • Varsayılan sınırlayıcı ',' belirtilmezse, bir sınırlayıcı (i) bir dize (sınırlayıcıyı çevreleyen beyaz boşluklar kırpılır) veya (ii) Perl normal ifadesi, ör. /\s*,\s*/ (preg_split adresine bakın)
  • Kullanıcılar boş bir dizi tanımlayabilir (örneğe bakın)
  • Kullanıcılar benzersiz, sıralama ve yazdırma gibi seçenekleri belirleyebilir (örneğe bakın).
    • Bir sınırlayıcı da belirtilmedikçe seçenekler yok sayılır.

Örnekler:

'a' adlı tek öğeli bir dizi tanımlayın
{{#arraydefine:a|red}}
'b' adlı dört öğeli bir dizi tanımlayın, varsayılan sınırlayıcı (',') kullanın
{{#arraydefine:b|orange, red, yellow, yellow}}
'c' adlı boş bir dizi tanımlayın/ayarlayın
{{#arraydefine:c}}
';' kullanarak 'd' adlı iki elemanlı bir dizi tanımlayın sınırlayıcı olarak
{{#arraydefine:d|apple; pear|;}}
Sınırlayıcı olarak /\s*[;,]\s*/ normal ifadesini kullanarak 'e' adlı üç öğeli bir dizi tanımlayın
{{#arraydefine:e|apple, pear; orange|/\s*[;,]\s*/}}
'f' adlı üç öğeli bir dizi tanımlayın, ayırıcı (','), "unique, sort=desc, print=list" seçeneklerini kullanın (dizi öğeleri benzersizdir, azalan düzende sıralanır ve yazdırılır). daha fazla "sort" seçeneği değeri için #arraysort sayfasına bakın
{{#arraydefine:f|orange, red, yellow, yellow |, |unique, sort=desc, print=list}}

Dizilerle çalışma[edit]

Çıkarma[edit]

arrayprint[edit]

Bu işlev, bir dizinin değerlerini özelleştirilebilir biçimde yazdırır.

Sözdizimi:

{{#arrayprint:key|delimiter|pattern|subject|options}}

Notlar:

  • 'subject' viki bağlantılarını, şablonları ve ayrıştırıcı işlevlerini kabul eder.
  • 'subject' içinde, '|' kanal karakterlerinden kaçmak zorunda değilsiniz! Tüm yapı içinde, desen aranacak ve her döngünün geçerli (kaçan) dizi değeri ile değiştirilecektir. Son olarak, tüm dize ayrıştırılır ve ayırıcı olarak sınırlayıcı ile yerleştirilecek bir sonuç dizisine yerleştirilir.
  • Yazdırılması gereken dizinin mevcut olmaması durumunda, boş bir dize döndürülür. (1.4 alfada, uyumluluk modunun bir parçası olarak tanıtıldı)
  • Varsayılan sınırlayıcı dile bağlıdır, İngilizce için ', '. (2.0'da, uyumluluk modunun bir parçası olarak tanıtıldı)

Örnekler:

Yazdır - dile bağlı varsayılan liste sınırlayıcısını kullanarak
{{#arrayprint:b}}
Yazdır - sınırlayıcı olmadan
{{#arrayprint:b | }}
Yazdır - sınırlayıcı olarak '<br/>' (satır sonu) kullanarak
{{#arrayprint:b |<br/> }}
Son iki öğenin bir ' and ' (veya yerel dillere eşdeğer) ile zincirlendiği güzel liste çıkışı. Sınırlayıcı parametresi boş olsa da, aksi takdirde güzel olmayacağı ve ', ' (veya eşdeğer diller) kullanılacaktır.
{{#arrayprint:b ||@ |@ |print=pretty }}
Kategorilere viki bağlantısı yerleştir
{{#arrayprint:b |<br/> |@@@@ |[[:Category:@@@@|@@@@]] }}
Semantic MediaWiki özellik değerini tanımlama
{{#arrayprint:b |<br/> |@@@@ |[[prop1::@@@@]] }}
Ayrıştırıcı işlevini göm
{{#arrayprint:b |<br/> |@@@@ |length of @@@@:{{#len:@@@@}} }}
Şablonu göm (parametrelerle)
{{#arrayprint:b|<br/>|@@@@|{{template|prop2|@@@@}} }}

arrayindex[edit]

Bu işlev, index konumundaki bir dizinin değerini (key ile tanımlanır) yazdırır.

Sözdizimi:

{{#arrayindex:key|index|default}}

Notlar:

  • Geçersiz dizin (sayı olmayan, sınır dışı) boş bir dizenin yazdırılmasına neden olur.
  • Dizin 0 tabanlıdır, yani ilk öğenin dizini 0'dır.
  • Negatif dizinler, sondan uzak bir öğe döndürür (örneğin, -1 dizilerin son öğesi olur).
  • default dizinin mevcut olmaması, anahtarın dizinin içinde olmaması veya değerin boş bir dize olması durumunda döndürülür.

Örnekler:

a dizisindeki üçüncü öğe
{{#arrayindex:a |2 }}
b dizisindeki son öğe
{{#arrayindex:b |-1 }}
Geçersiz dizin için varsayılan değeri yazdır
{{#arrayindex:c |foo |bad value }}

arraysize[edit]

Bu işlev, bir dizinin boyutunu (öğe sayısı) döndürür. Bakınız: https://secure.php.net/function.count

Belirli bir dizinin mevcut olmaması durumunda, işlevin çıkışı sayı yerine geçersiz bir dize olur. Bu, dizinin var olup olmadığını kontrol etmenizi sağlar.

Sözdizimi:

{{#arraysize:key}}

Örnekler:

Dizi a'nın boyutu:
{{#arraysize:a}}
Dizi a'nın var olup olmadığını kontrol edin:
{{#if: {{#arraysize:b}} | ''dizi var'' | ''dizi tanımlanmadı'' }}

arraysearch[edit]

Bu işlev, 'index' parametresi tarafından tanımlanan konumdan başlayarak dizideki 'value' ilk oluşumunun dizinini ('key' ile tanımlanır) döndürür ve başarısız olduğunda boş bir dize döndürür. yes ve/veya no belirtildiğinde, bu durumda yes olarak ayarlanan değeri, aksi takdirde no değerini genişletir. Bakınız: https://secure.php.net/function.array-search

Sözdizimi:

{{#arraysearch:key|value|index|yes|no}}


Örnekler:

Bir değerin ilk oluştuğu dönüş dizini
{{#arraysearch:b|white}}
{{#arraysearch:b|red}}
Bir değerin ilk oluştuğu dönüş dizini
{{#arraysearch:b|white}}
{{#arraysearch:b|red}}
ofseti kullan
{{#arraysearch:b|red|0}}
{{#arraysearch:b|red|2}}
preg normal ifade eşleşmesini kullan
{{#arraysearch:b|/low/}}
{{#arraysearch:b|/LOW/i}} - büyük/küçük harfe duyarlı değil
{{#arraysearch:b|low}}
evet kullan hayır yazdırma seçeneği
{{#arraysearch:b|white|0|yes|no}}
{{#arraysearch:b|yellow|0|yes|no}}

arraysearcharray[edit]

Bu işlev bir diziyi arar (key ile tanımlanır) ve aramadan tüm sonuçlarla yeni bir dizi (new_key ile tanımlanır) oluşturur. value arama ölçütleri bir dize veya normal bir ifade olabilir. index verilirse arama burada başlayacaktır, limit maksimum arama sonuçlarını tanımlayabilir. value normal bir ifade ise transform ile tanımlanan parametre kullanılabilir. Eşleşen girişlerin sonucunu PHP preg_replace gibi new_key dizisine dönüştürebilir.

Sözdizimi:

{{#arraysearcharray:new_key|key|value|index|limit|transform}}

Notlar:

  • value bir dize ise new_key dizisi yalnızca tam olarak bu dizenin girişlerini içerir.
  • -n gibi negatif index değerleri yalnızca son n girişlerini aramak için kullanılabilir.
  • Viki içinde Extension:Regex Fun varsa, Regex Fun'ın e değiştiricisi normal ifade içinde kullanılabilir. Bunun PHP e değiştiricisi ile bir ilgisi yoktur (bu bir güvenlik ihlali olacaktır). Aktif e değiştirici ile transform dizesi, geri kaynaklar eklendikten sonra ayrıştırılır ve bundan sonra gerçek eşleşmenin yerini alır.

Örnekler:

'a' dizisindeki A ile başlayan ve bir boşluk izleyen tüm girişleri bulun ve bunları yeni bir 'x' dizisine yerleştirin
{{#arraysearcharray:x |a |/^A\s.+/ }}
'a' dizisinin sayılarla biten ve sayıları yalnızca yeni bir 'y' dizisine koyan tüm girdilerini arama
{{#arraysearcharray:y |a |/^.*?(\d+)$/ |0 |-1 | $1 }}
numaralarla biten ve bu öğelerin uzunluğunu yeni diziye koyan 'a' dizisinin tüm girişlerini arama (Bu, Regex Fun uzantısını gerektirir).
{{#arraysearcharray:y |y |/^.*?\d+$/e |0 |-1 | {{#len:$0}} }}
'a' dizisinden boş değerleri kaldırın.
{{#arraysearcharray:a|a|/\S+/}}

arrayslice[edit]

Bu işlev bir diziden bir alt diziyi ('key' ile tanımlanır) yeni bir diziye ('new_key' ile tanımlanır) ayıklar. Bakınız: https://secure.php.net/function.array-slice

Sözidizimi:

{{#arrayslice:new_key|key|offset|length}}

Notlar:

  • Ofset, dilimin başlangıç noktasını belirtir, (i) geriye doğru endeks için negatif olmayan sayı (ii) negatif sayı olabilir (örneğin, dizinin ofsetinin son öğesi -1'dir). öteleme dizinden farklı (negatif olmayan bir sayı olmalıdır)
  • Uzunluk, kaç elemanın ayıklanacağını gösterir. Atlanırsa, dizi, ofsetten dizinin sonuna kadar her şeye sahip olacaktır.
  • Ofset dizi boyutundan küçük değilse, boş dizi döndürülür, negatif dizi boyutundan büyük değilse ofset, tüm öğeleri içeren yeni bir dizi döndürülür

Örnekler:

Ofset 1 öğesinden başlayarak iki elementli bir dilimi çıkarın
{{#arrayslice:x|b|1|2}}
Ofset -2'deki elemandan başlayarak iki elemanlı bir dilim çıkarın
{{#arrayslice:x|b|-2|2}}

Değişiklik[edit]

Yeni bir dizi oluşturmak yerine bir diziyi doğrudan değiştiren işlevler.

arrayunique[edit]

Bu işlev bir diziyi ('key' ile tanımlanır) kümeye (çoğaltılmış üye yok, boş öğe yok) dönüştürür. Bakınız: https://secure.php.net/function.array-unique

Syntax:

{{#arrayunique:key}}

Örnekler:

diziyi sete dönüştür
{{#arrayunique:b}}

arrayreset[edit]

Bu işlev tanımlı dizilerin bazılarını veya tümünü kaldırır.

Sözdizimi:

{{#arrayreset:}} <!-- TÜM dizileri kaldıracak -->
{{#arrayreset:key1 |key2 |... |key-n }}

Notlar:

  • Üzerlerinde arraysize kullanıldığında, 0 yerine boş bir dize döndürülür, böylece gerçekten ayarlanmamıştır, boş değildir. Bir diziyi boşaltmak için {{#arraydefine:key}} kullanılabilir.
  • Sürüm 1.4'ten önce alfa ',' ayarlanması gereken birkaç diziyi ayırmak için kullanılır.

arraysort[edit]

Bu işlev bir diziyi aşağıdaki sırayla sıralar.

Syntax:

{{#arraysort:key|order}}

Not:

  • Her dizi öğesine bir dize olarak davranılıyor, yani rakamlar beklendiği gibi sıralanamayabilir.

Örnekler:

Diziyi sırala
{{#arraysort:x|desc}}
Bir diziyi rastgele seç
{{#arraysort:x|random}}
Bir diziyi tersine çevir
{{#arraysort:x|reverse}}

Etkileşim[edit]

Birden fazla dizi ile çalışan, yeni bir dizi oluşturan veya sonuç olarak mevcut bir dizinin üzerine yazan işlevler. Sürüm 2.0'dan bu yana, bu işlevler aynı anda yalnızca ikiden fazla diziyle etkileşime girebilir. Yalnızca bir diziyle ilgilenmeleri durumunda, bu dizinin bir kopyasını oluştururlar. Var olmayan diziler bu işlevler tarafından göz ardı edilir.

arraymerge[edit]

Bu işlev iki veya daha fazla dizinin değerini yeni bir dizide birleştirir (new_key ile tanımlanır). Bakınız: https://secure.php.net/function.array-merge

Sözdizimi:

{{#arraymerge:new_key |key1 |key2 |... |key-n }}

Örnekler:

İki diziyi birleştir
{{#arraymerge:x |a |b }}
Bir diziyi çoğaltma (arraymerge'in üçüncü bağımsız değişkenini boş bırakın
{{#arraymerge:x |b }}

arrayunion[edit]

Bu işlev iki veya daha fazla dizinin değerlerini yinelenen değerler olmadan yeni bir dizide (new_key ile tanımlanır) birleştirir.

Sözdizimi:

{{#arrayunion:new_key |key1 |key2 |... |key-n }}

Notlar:

  • Bu bir küme işleci, yani döndürülen dizi yinelenen değerler içermeyen bir kümedir.
  • Bu, daha sonra arrayunique ile arraymerge eşittir.

Örnek:

Üç dizinin birleşimi
{{#arrayunion:x |a |b |c }}

arraydiff[edit]

Bu işlev iki veya daha fazla dizinin (set teorik) farkını hesaplar. Sonuç dizisi new_key ile tanımlanır. Döndürülen dizi, diğer dizilerin hiçbirinde tanımlanmayan ilk verilen dizinin (key1 ile tanımlanan) öğelerini içeren bir kümedir. Bakınız: https://secure.php.net/function.array-diff

Sözdizimi:

{{#arraydiff:new_key |key1 |key2 |... |key-n }}

Not:

  • Bu bir küme işleci, yani döndürülen dizi yinelenen değerler içermeyen bir kümedir.
  • Bu işlev alt sınıf ilişkisini test etmek için kullanılabilir

Örnekler:

Fark (b-a)
{{#arraydiff:x |b |a }}
Fark (a-b)
{{#arraydiff:x |a |b }}
Fark (a-(b+c))
{{#arraydiff:x |a |b |c }}

arrayintersect[edit]

Bu işlev, verilen iki veya daha fazla dizinin küme teorik kesişimini hesaplar. Sonuç dizisi new_key ile tanımlanır. Bakınız: https://secure.php.net/function.array-intersect

Sözdizimi:

{{#arrayintersect:new_key |key1 |key2 |... |key-n }}

Not:

  • Bu bir küme işleci, yani döndürülen dizi yinelenen değerler içermeyen bir kümedir.

Örnek:

Yeni diziye x konulan üç dizinin kesişimi
{{#arrayintersect:x |a |b |c }}

Kurulum[edit]

  • İndir ve dosyaları extensions/ klasörünüzdeki Arrays adlı bir dizine yerleştirin.

Yapılandırma[edit]

Arrays 2.0 iki yapılandırma değişkeni sunar:

$egArraysCompatibilityMode
(1.4 alfa $egArrayExtensionCompatbilityMode) true olarak ayarlandığında, eski ArrayExtension 1.3.2'nin davranışını mümkün olduğunca geri getirecek uyumluluk modu etkinleştirilir. Bunun nedeni, Sürüm 2.0'da birkaç kırılma değişikliğinin getirilmesidir. Bu nedenle, bu uyumluluk modunun kullanılması 1.x'ten 2.x Arrays uzantısına yumuşak bir geçiş sağlar. Varsayılan olarak, uyumluluk modu etkin değildir. Değişikliklerin bundan etkilenen bir liste için /Pre_2.0_Documentation#Diziler 2.0 ile karşılaştırıldığında farklılıklarına bakın. Daha önce vikinizde eski ArrayExtension kullanıyorsanız, uyumluluk modu olmadan Arrays geçmeden önce bu listeye göz atmak ve şablonlarınızı ayarlamak isteyebilirsiniz.
$egArraysExpansionEscapeTemplates
Bir #arrayprint içine dahil edilen dizi değerleri içinde bir şablon veya ayrıştırıcı işlev çağrısı ile değiştirilmesi gereken karakterlerin anahtar/değer çifti listesini içerir. Değerleri daha sonra genişletilecek dizeye eklemeden önce bu özel karakterleri değiştirerek, dizi değerleri çevreleyen MW kodunu dağıtamaz. Aksi takdirde dizi değerlerinin kendileri de ayrıştırılır. Varsayılan olarak bu, aşağıdaki şablon veya ayrıştırıcı işlev çağrılarıyla aşağıdaki karakterlerden kaçacaktır:
  • = ile {{=}} ("Template:=", '=' yazdırmalıdır)
  • | ile {{!}} ("Template:!", '|' yazdırmalıdır)
Not Not: MW 1.24.0 ile başlayarak artık "Template:!" amacına yeni {{!}} sihirli kelime tarafından hizmet edilmiyor.
  • {{ ile {{((}} ("Template:((", '{{' yazdırmalıdır)
  • }} ile {{))}} ("Template:))", '}}' yazdırmalıdır)
Bu şablonların veya ayrıştırıcı işlevlerinin vikinizde bulunduğundan emin olun veya bu değişkeni buna göre değiştirin. Bu doğru şekilde ayarlanmazsa, dizi karakterleri içinde bu karakter sekanslarının kullanılması durumunda #arrayprint beklenmedik değerler yazdırabilir.
$egArraysExpansionEscapeTemplates de sadece null olarak ayarlanabilir, bu durumda bu karakter dizilerine sahip dizi değerlerinin #arrayprint içindeki verilen subject kodunu kırdığı 2.0 öncesi davranışa geri döner. Uyumluluk modu etkinse, bu her zaman "null" olarak ayarlanmış olarak kabul edilir.

SSS[edit]

Dizi öğelerine bağımsız olarak erişme[edit]

#arrayprint veya Extension:Loops kullanarak bir dizinin öğelerine tekrarlı olarak erişmek mümkündür.

arrayprint kullanma[edit]

<!--dizi tanımla-->
{{#arraydefine:colors|Red,Blue,Yellow}}

{{#arrayprint:colors||@@@@|<nowiki/>
* length of @@@@: {{#len:@@@@}}
}}

beklenen çıkış aşağıdadır:

  • length of Red: 3
  • length of Blue: 4
  • length of Yellow: 6

canlı örnekler için bu URL'yi izleyin.

Anahtarları yeniden kullanma[edit]

Önceden tanımlanmış bir dizi yazdırıldıktan sonra, aynı tuş sayfanın aşağısındaki başka bir dizi için tekrar kullanılabilir. Bu dizi gözlendiği sürece, her dizi için benzersiz bir anahtar tanımlamaya gerek yoktur.

Loops uzantısını kullanma[edit]

Daha karmaşık görevler için Loops uzantısı kullanarak bir dizi arasında geçiş yapmak mümkündür.

{{ #arraydefine: colors | red;#FF0000, green;#00FF00, blue;#0000FF }}
{{
  #loop: i
  | 0                       <!-- loops start value for {{ #var:i }} -->
  | {{ #arraysize:colors }} <!-- number of loops -->
  | <nowiki/>
* {{
    #arraydefine: val | {{ #arrayindex:colors | {{ #var:i }} }} | ;
  }}
  <span style="color:{{ #arrayindex: val | 1 }}">
  {{ #arrayindex: val | 0 }}
  </span>
}}

Bu şöyle bir şey çıkarır:

  • kırmızı
  • yeşil
  • mavi

Extension:Semantic MediaWiki ile çalıştırma[edit]

Bir diziyi semantik verilerle doldurmanın iki yolu vardır. Anlamsal Sonuç Biçimlerini kullanan ilk çözüm daha hızlı ve daha güvenilirdir, aynı zamanda kayıt verileri ve bir mülk için birden çok değer içeren karmaşık veri kümeleriyle de çalışır.

Extension:Semantic Result Formats kullanma[edit]

Semantic Result Formats (SRF), 1.6.1 sürümünde Dizi biçimini sunar. Extension:Arrays dizisinde otomatik olarak saklanacak verileri sorgulamak için kullanılabilir. Dizilerde semantik verilerle ilgili tercih edilen çözüm budur. Ayrıntılar semantic-mediawiki.org adresinde bulunabilir.

Örnek:

{{#ask: [[Category:Color]][[:+]] |format=array |name=colors}}
{{#arrayprint: colors}}

Standart bir sorgu kullanma[edit]

Yukarıdaki SRF çözümünü kullanamıyorsanız, Arrays, liste biçiminin SMW sorgu sonucunu kullanarak bir diziyi doldurmaya da izin verir:

Örnek A: 'Color' sınıfının örneklerinin bir listesini oluşturmak için

{{#arraydefine:colors|{{#ask:[[Category:Color]][[:+]] |sep =, |limit=1000}} }}

Örnek B: Benzersiz bir özellik değerleri listesi oluşturmak için 'has color'

{{#arraydefine:colors|{{#ask:[[has color::+]][[:+]] |?color= |mainlabel=- |sep =, |limit=1000}} |,|unique}}

Örnek C: SWM sorgusu tarafından oluşturulan 2B diziyi ele almak için (ör. kayıt türü özellik)

given a 2D array "red;#da2021, yellow;#fcff00, green;#00ff00"

1. bir dizi 'colors' oluşturun
{{#arraydefine:colors|red;#da2021, yellow;#fcff00, green;#00ff00}}

2. 'colors' ilk öğesini başka bir 'colors0' dizisine ayırın
{{#arraydefine:color0|{{#arrayindex:colors|0}}|;}}

Not:

  • anlamsal sorgu parametreleri
    • limit=1000 semantik sorgunun döndürülen tüm sonuçlarını tüketmek için kullanılır
    • sep=, sonuç girişleri için ayırıcıyı ayarlamak için kullanılır.
    • mainlabel=- sayfa sütununu kesme seçeneği

Extension:DynamicPageList ile çalıştırma[edit]

Yukarıda SMW için tarif edilene benzer şekilde, Arrays uzantısı bir DPL sorgusu nun sonuçlarını saklamak için kullanılabilir.

Örnek'de bir sonuç listesinin nasıl "ters çevrilebileceğini" gösteririz. Belirli bir şablonu içerdiklerinde belirli sayfalar tarafından kullanılan tüm parametre değerlerini toplarız. Şablon parametre değeri ve sayfa adı çiftlerini saklarız. Sonra diziyi sıralarız ve çiftleri yazdırırız. Ardışık dizi elemanları aynı ilk kısma sahipse (yani parametre değerleri aynı ise), ilk kısım yalnızca bir kez yazdırılır. Böylece basit bir "ters endeks" oluşturabiliriz. Aynı mekanizma diğer sorunlara da uygulanabilir.

Ayrıca bakınız[edit]