ჩაკეტვა (Closure)¶
კვანძი ჩაკეტვა განსაზღვრავს ზონას, რომელიც კვანძების მრავალჯერადად გამოყენებადი ნაწილების ინკაფსულაციას ახდენს და ფუნქციის მსგავსად იქცევა. იგი განსაზღვრავს შენატანებს, გამონატანებსა და შინაგან ლოგიკას, რომლის გაშვებაც კვანძოვანი ხის ფარგლებში სხვა ადგილასაც შეიძლება ჩაკეტვის შეფასების კვანძის გამოყენებით.
ჩაკეტვები მომხმარებლებს კვანძების ჯგუფებისთვის მორგებული პროცედურული ლოგიკის გადაცემის საშუალებას აძლევს, რაც ხელსაწყოებს უფრო მოდულარულსა და ადაპტირებადს ხდის. არსებული ჯგუფის დუბლირების, ან რედაქტირების მაგივრად, ჩაკეტვას შეუძლია, მომხმარებლის მიერ განსაზღვრული ქცევა გამოაჩინოს და, ამავდროულად, მთავარი სისტემის სტრუქტურა შეინარჩუნოს.
ცარიელი ჩაკეტვის ზონა.¶
შენატანები¶
ჩაკეტვები თავად განსაზღვრავენ საკუთარ შენატანებს, რომლებიც კვანძების შინაგანი ლოგიკისთვის პარამეტრების როლს ასრულებენ. ამ შენატანების შექმნა შესაძლებელია ცარიელი შენატანის ბუდიდან მეორე ბუდეში გადათრევით, ან კვანძის თვისებებში ბუდეების ხელით ჩამატებით. თითოეული შენატანი განსაზღვრავს პარამეტრს, რომელიც ჩაკეტვას შეუძლია, მიიღოს, როცა მისი შეფასება სხვაგან ხდება.
თვისებები (Properties)¶
ჩაკეტვის კვანძს საკუთარი ფუნქციონალური თვისებები არა აქვს, თუმცა ინტერფეისი გვერდითა ზოლში მდებარე კვანძის ჩანართის მეშვეობით კონფიგურირებადია. შესაძლებელია შენატანებისა და გამონატანების დამატება, მოცილება და სახელების გადარქმევა ჩაკეტვის სიგნატურის განსასაზღვრად.
- ბუდეების სინქრონირება (Sync Sockets)
ანახლებს ამჟამინდელ კვანძს, რათა დაკავშირებული კვანძების ბუდის სიგნატურას უკეთ შეესაბამებოდეს. ეს ფუნქცია სახელის გადარქმების, ბუდეების დამატების, ან მოცილების შემდეგ უნდა გამოიყენო.
- სიგნატურის განსაზღვრა (Define Signature)
მიმდინარე ზონას ჩაკეტვის სიგნატურად აღნიშნავს, რომელზეც სხვა კვანძებს მითითების გაკეთება შეუძლიათ. ეს ჩაკეტვის სხვადასხვა ინსტანციებში შენატანებისა და გამონატანების კონსისტენციურ განსაზღვრას უზრუნველყოფს.
შემავალი საგნები (Input Items)¶
- შენატანთა ბუდეების სია
ჩაკეტვაში განსაზღვრულ თითო ბუდეზე თითო ჩანაწერს ასახავს. ჩანაწერისთვის სახელის გადასარქმევად ორჯერ დააწკაპუნე მასზე.
- საგნის დამატება (Add Item)
Add a new input socket to the closure.
- საგნის მოცილება (Remove Item)
წაშალე შენატანის მონიშნული ბუდე.
- ტიპი (Type)
განსაზღვრავს მონაცემთა ტიპს მონიშნული ბუდისთვის (მაგ., წილადნიშნა, ვექტორი, გეომეტრია, ობიექტი, შეკვრა). მნიშვნელობათა ტიპებისთვის ნაგულისხმები მნიშვნელობის სამართავი მაშინ ჩნდება და გამოიყენება, როცა ბუდის კავშირი წყდება.
- ფორმა (Shape)
განსაზღვრავს საგნის შენატანის მიერ მხარდაჭერილ მონაცემთა სტრუქტურას, მაგალითად, ცალი მნიშვნელობა, ველი, ან ბადე. ფორმით დგინდება, თუ როგორ ხდება მონაცემთა შეფასება და შეკვრაში შენახვა. დამატებითი ინფორმაციისთვის იხ. ბუდის ფორმა.
გამომავალი ელემენტები (Output Items)¶
ხელმისაწვდომია, როცა ჩაკეტვის გამონატანის ზონა მონიშნულია.
- გამომავალი ბუდეების სია
ჩაკეტვის გამონატანში განსაზღვრულ თითოეულ ბუდეზე თითო ჩანაწერს ასახავს. სახელის გადასარქმევად ორჯერ დააწკაპუნე.
- საგნის დამატება (Add Item)
დაამატე ჩაკეტვას ახალი გამომავალი ბუდე.
- საგნის მოცილება (Remove Item)
წაშალე მონიშნული გამომავალი ბუდე.
- ტიპი (Type)
განსაზღვრავს მონაცემთა ტიპს მონიშნული ბუდისთვის (მაგ., წილადნიშნა, ვექტორი, გეომეტრია, ობიექტი, შეკვრა). მნიშვნელობათა ტიპებისთვის ნაგულისხმები მნიშვნელობის სამართავი მაშინ ჩნდება და გამოიყენება, როცა ბუდის კავშირი წყდება.
- ფორმა (Shape)
განსაზღვრავს საგნის შენატანის მიერ მხარდაჭერილ მონაცემთა სტრუქტურას, მაგალითად, ცალი მნიშვნელობა, ველი, ან ბადე. ფორმით დგინდება, თუ როგორ ხდება მონაცემთა შეფასება და შეკვრაში შენახვა. დამატებითი ინფორმაციისთვის იხ. ბუდის ფორმა.
გამონატანები¶
ჩაკეტვები თავად განსაზღვრავენ საკუთარ გამონატანებს და მნიშვნელობებს იმ კვანძოვან ხეში აბრუნებენ, რომელშიც მათი შეფასება ხდება. გამონატანების შექმნა შესაძლებელია ზონის ფარგლებში მდებარე ბუდიდან ჩაკეტვის გამონატანზე მდებარე ცარიელ ბუდეში გადათრევით, ან კვანძის თვისებებში ბუდეების ხელით ჩამატებით.
გამოყენება¶
ჩაკეტვები განსაზღვრავენ მრავალჯერ გამოყენებად ლოგიკას, რომელიც შეგიძლია, სხვა კვანძოვან ხეში შეიტანო. ჩვეულებრივ, ისინი პროცედურულ სისტემებში გამოიყენება, სადაც ქცევის ნაწილი მომხმარებლის მიერ განსაზღვრული უნდა დარჩეს.
გამოყენების ტიპიურ შემთხვევებში შედის:
ლანდშაფტის გენერატორისთვის გაფანტვის მორგებული წესის განსაზღვრა.
ინსტანციების პროცედურულად გადანაწილების, ან მოდიფიცირების გზის აღწერა.
რეგულირებადი განაწილებების, ველების შეფასებისა, ან გარდაქმნის ლოგიკის მიწოდება.
გარეგანი მნიშვნელობების გამოყენება¶
ჩაკეტვებს შეუძლიათ, თავიანთი ზონის გარეთ მდებარე მნიშვნელობები დააფიქსირონ. დაფიქსირებული მნიშვნელობა ჩაკეტვის განსაზღვრების ნაწილის სახით ინახება და მაშინაც ხელმისაწვდომი რჩება, როცა ჩაკეტვა სხვა კონტექსტში გამოითვლება.
დაფიქსირებული მნიშვნელობებით შესაძლებელი ხდება გარე პარამეტრების — როგორებიცაა მასშტაბი, სიმკვრივე, ან ფერი — შენარჩუნება ცხადი (ექსპლიციტური)შენატანის ბუდეების შეუქმნელად. ამით ჩაკეტვები უფრო სუფთა ხდება და სხვადასხვა კვანძოვან ხეებში მათი გამოყენებაც იოლდება.
გარე შენატანის მნიშვნელობის დაფიქსირება ჩაკეტვის შიგნით.¶
მაგალითი¶
ლანდშაფტის გენერატორის კვანძთა ჯგუფში ხის დისტრიბუციის ლოგიკა ჩაკეტვის შეფასების კვანძით ჩაანაცვლე.
გამოაჩინე ჩაკეტვის შენატანი ჯგუფის ინტერფეისში.
მთავარ კვანძოვან ხეში ჩაკეტვის ზონა შექმენი და იმ შენატანს დაუკავშირე.
ჩაკეტვის ზონის შიგნით განსაზღვრე ხის განთავსების სასურველი ლოგიკა.
როცა გენერატორი ჩაკეტვას გამოითვლის, ნაგულისხმები ქცევის ნაცვლად ზონაში განსაზღვრული მორგებული დისტრიბუცია შესრულდება.
ჩაკეტვის ზონა, რომელიც ხეების გასაფანტად გადანაწილების მორგებულ შაბლონს განსაზღვრავს.¶