Verimli birleştirme işlemlerini destekleyen ve tanımlanmış bir geçiş sırasına sahip özel bir veri yapısıdır. Kurallardaki ve yönlerdeki geçişli bağımlılıklardan veri toplamak için yaygın olarak kullanılır. Daha fazla bilgi için burayı inceleyin.
Bir depsetin öğeleri karma oluşturulabilir ve tümü aynı türde olmalıdır (yerleşik type(x)
işleviyle tanımlandığı gibi). Ancak depsetler yalnızca karma kümeler değildir ve hızlı üyelik testlerini desteklemez. Genel bir küme veri türüne ihtiyacınız varsa temel Starlark küme türünü (Bazel 8.1'den beri kullanılabilir) kullanın. .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 (ör. if d:
gibi bir Boole bağlamında kullanıldığında ve d
bir depset olduğunda) bir depset yalnızca boş değilse Doğru olur. Bu kontrol, O(1) işlemidir.
Bağımlılık kümeleri değiştirilemez. Yapıcı işlevleri kullanılarak oluşturulmalı ve transitive
bağımsız değişkeni aracılığıyla diğer depset'lerle birleştirilmeli veya artırılmalıdır.
order
parametresi, depset'in yinelenebilir bir öğeye dönüştürülmesi için yapılan geçiş türünü belirler. Dört olası değer vardır:
-
"default"
(eski adıyla"stable"
): Sıra belirtilmemiştir (ancak deterministtir). -
"postorder"
(eski adıyla"compile"
): Soldan sağa sıralama sonrası. Bu, tüm alt öğeleri en soldan başlayarak yinelemeli olarak, ardından doğrudan öğeleri en soldan başlayarak yinelemeli olarak geçer. -
"preorder"
(eski adıyla"naive_link"
): Soldan sağa ön sipariş. Bu, doğrudan öğeleri en soldan başlayarak, ardından alt öğeleri en soldan başlayarak yinelemeli olarak geçer. -
"topological"
(eski adıyla"link"
): Kökten yapraklara doğru topolojik sıralama. Soldan sağa doğru bir garanti yoktur.
İki bağımlılık kümesi yalnızca her ikisi de aynı sıraya sahipse veya birinde "default"
sırası varsa birleştirilebilir. İkinci durumda, ortaya çıkan depset'in sırası diğerinin sırasıyla aynı olur.
Depset'ler yinelenen değerler içerebilir ancak bunlar yineleme sırasında (to_list()
kullanılarak) bastırılır. Yinelenen değerler, sıralama semantiğini etkileyebilir.
Üyeler
to_list
list depset.to_list()
"default"
sıralı bağımlılık kümeleri ve sıralaması üst bağımlılık kümesinden farklı olan alt bağımlılık kümelerinin öğeleri için de sıra belirtilmez. Liste bir kopyadır. Listenin değiştirilmesi, depset'i etkilemez ve bunun tersi de geçerlidir.