conditional switch

Windows_PowerShell_iconczęsto zamiast budowy skomplikowanych IFów lepiej jest skorzystać ze switcha. czyli zamienić złożoną składnię bazowaną na wielu 'if-then-else’ dużo czytelniejszym i prostszym blokiem 'switch’. to oczywista oczywistość ale jest coś bardziej 'zaawansowanego’ co jeszcze bardziej ułatwia życie – PowerShellowy Switch pozwala nie tylko na proste porównania, czy definicje wildcardów, które można znaleźć w manualu, ale również na tworzenie złożonych wyrażeń logicznych.

przykład takiego switcha:

test-switch.ps1

param(
    [int]$int
)

switch($int) {
    1 { write-host 'normalka'}
    {2 -or 3} {write-host 'ten sam dla dwóch wartości'}
    {$_ -ge 4} { write-host 'wieksze niz 3'}
    {$_ -ge 5} { write-host 'wieksze niz 4'
        break;
    }
    {$_ -lt 8} {write-host 'mniejsze niz 8 [ale nie wieksze niz 4]'} 
    default { write-host 'wszystkie inne'}
}

uwagę należy zwrócić na:

  • zastosowanie 'break’ – standardowo switch wykona *wszystkie* bloki, spełniające warunek. w przypadku wywołania test-switch z parametrem 1 lub 2 pojawi się dodatkowo informacja ’mniejsze niż 4 [ale nie większe niż 2]’ . jeśli liczba będzie większa niż 3, wpadnie w klauzulę z 'break’ i ostatni krok nie zostanie wykonany. dla tego należy pamiętać, że *kolejność ma znaczenie*.
  • dzięki temu, że switch wykonuje wszystkie bloki spełniające warunek, można zrobić krok typu 'catch all’ – który wykona się zawsze. ale warto umieścić go jako pierwszy tak, żeby nie przerwał go jakiś break. najlepiej użyć 'switch -wildcard’ -> manual.
  • w instrukcji [man switch] można znaleźć bardzo fajne przykłady dla wyrażeń regularnych i wildcardów, dla tego pomijam go w tym prostym przykładzie. ale warto wiedzieć, że można wykonywać również zaawansowane porównania na ciągach znaków.
  • to czego zabrakło w manualu to właśnie przykład wyrażenia logicznego. klauzulą może być dowolne wyrażenie zamknięte w nawiasach klamrowych {} . oczywiście dla determinizmu zachowania powinno zwracać true/false.
  • PS switch nie pozwala na definiowane tego samego bloku dla kilq wartości [listy] tak, jak to się robi np. w VBS, czyli nie da się zdefiniować ’ 1,2 { blok } ’ . w zamian można użyć warunku logicznego '{1 -or 2} {blok} ’ . trochę mniej wygodne, ale działa tak samo (:

proste i wydajne. proponuję dla gimnastyki rozpisać to sobie na IFach… (;

eN.

 

szkolenie PowerShell – jak pisać skrypty

MVAw końcu! materiał na długo utknął w postprodukcji (; ale w końcu jest – 3cia część szkolenia, tym razem już dla mniej-początqjących – 'jak pisać skrypty/funkcje’. szkolenie jest na pewno ciekawsze, ponieważ towarzyszy mi Darek Porowski, który pilnuje żebym nie przynudzał za bardzo. i to [chyba] zadziałało q:

zachęcam do zapoznanie się z materiałem i oceny ::))o- PowerShell dla zaawansowanych – http://aka.ms/plmva-psadv

eN.

A.I. – bać się czy cieszyć?

…jak na dziś – korzystać! znalazłem bardzo fajny artykuł, w dość nietypowym, jak na tego typu temat, miejscu. polecam poczytać, bo jest w nim zagregowana spora dawka informacji na temat A.I. dotycząca tego, co można zrobić już dziś, jakie jest ryzyko takich technologii. to, czy przejmą panowania na światem, myślę, że można odstawić na dalszy plan, ale na pewno podstawową kwestią są miejsca pracy. najłatwiej jest zastąpić najmniej wykwalifikowanych pracowników, których jest zarazem najwięcej. przytoczone statystyki dają do myślenia.

Sztuczna inteligencja. Nasze niebo i piekło

eN.