kullanımdan kaldırmak

Sorun bildir Kaynağı göster Nightly · 8.3 · 8.2 · 8.1 · 8.0 · 7.6

Verimli birleştirme işlemlerini destekleyen ve tanımlanmış bir tarama sırasına sahip özel bir veri yapısı. Genellikle kurallar ve görünümlerdeki geçişli bağımlılıklardan veri toplamak için kullanılır. Daha fazla bilgi için burayı inceleyin.

Bir depset öğesi karma oluşturmaya uygun olmalı ve tümü aynı türde olmalıdır (yerleşik type(x) işlevi tarafından tanımlandığı gibi). Ancak depsetler yalnızca karma küme değildir ve hızlı üyelik testlerini desteklemez. Genel bir küme veri türüne ihtiyacınız varsa temel Starlark kümesi türünü kullanın (Bazel 8.1'den beri kullanılabilir); .bzl dosyanızın eski Bazel sürümleriyle uyumlu olması gerekiyorsa tüm anahtarların True ile eşlendiği bir sözlük kullanarak küme simülasyonu yapabilirsiniz.

Doğruluk açısından test edildiğinde (yani, d bir depset olduğunda if d: gibi bir Boole bağlamında kullanıldığında) bir depset yalnızca boş değilse Doğru olur; bu kontrol O(1) bir işlemdir.

Depsetler değiştirilemez. Bunlar, yapıcı işlevleri kullanılarak oluşturulmalı ve transitive bağımsız değişkeni aracılığıyla diğer bağımlılık kümeleriyle birleştirilmeli veya genişletilmelidir.

order parametresi, depoyu iteratif bir öğeye dönüştürmek için yapılan tarama türünü belirler. Dört olası değer vardır:

  • "default" (eski adıyla "stable"): Sıralama belirtilmemiştir (ancak belirlenmiştir).
  • "postorder" (eski adıyla "compile"): Soldan sağa doğru bir son sipariş verme. Daha doğrusu, bu işlev tüm alt öğeleri soldan sağa doğru, ardından doğrudan öğeleri soldan sağa doğru iteratif olarak tarar.
  • "preorder" (eski adıyla "naive_link"): Soldan sağa ön sipariş. Daha açık belirtmek gerekirse, bu işlev doğrudan öğeleri en soldaki önce olacak şekilde, ardından alt öğeleri de en soldaki önce olacak şekilde yinelemeli olarak tarar.
  • "topological" (eski adıyla "link"): Kökten dallara doğru topolojik bir sıralama. Soldan sağa sıralama garantisi yoktur.

İki depo grubu yalnızca her iki depo grubunun da aynı siparişe sahip olması veya bunlardan birinin "default" siparişe sahip olması durumunda birleştirilebilir. İkinci durumda, ortaya çıkan depsetin sırası diğer depsetin sırasıyla aynı olur.

Depset'ler yinelenen değerler içerebilir ancak yinelenen değerler iterasyon sırasında (to_list() kullanılarak) atlanır. Yinelenen değerler, sıralama semantiklerini etkileyebilir.

Üyeler

to_list

list depset.to_list()

Depo grubunun tarama sırasına göre öğelerin kopyasız bir listesini döndürür. Sıranın, depset'e birden fazla kez eklenen öğeler için belirtilmediğini (ancak belirlendiğini) unutmayın. Sıralama, "default" sıralı depo kümeleri ve sırası üst depo kümesinden farklı olan alt depo kümelerinin öğeleri için de belirtilmez. Liste bir kopyadır; listede yapılan değişiklikler depoyu etkilemez ve depodaki değişiklikler de listeyi etkilemez.