jak w PS utworzyć tablicę tablic (np. znaków)? czyli tak, aby każdy element tablicy był kolejną tablicą znaków.

zadanie wydawałoby się trywialne… ale jest drobny myk, na którym można stracić czas. problem polega na tym, że jeśli element tablic są tego samego typu, to dodając je do tablicy, zamiast tworzyć oddzielne rekordy, są sklejane.

przykład:

C:\...ive\_scriptz :))o- $str2=1,4,6
C:\...ive\_scriptz :))o- $str1=1,4,6
C:\...ive\_scriptz :))o- $str=@()
C:\...ive\_scriptz :))o- $str+=$str1
C:\...ive\_scriptz :))o- $str+=$str2
C:\...ive\_scriptz :))o- $str
1
4
6
1
4
6
C:\...ive\_scriptz :))o- $str.length
6

czyli źle – zamiast zrobić dwuelementową tablicę, gdzie każdym elementem jest inna, 3-elementowa tablica, zostały one sklejone w 6-elementową tablicę znaków. tak samo się zachowa czy są cyfry czy znaki alfabetu. zachowanie dobre, bo zazwyczaj takiej właśnie operacji się oczeqje. ale jak zmusić aby była to tablica tablic?

trik polega na zmuszeniu PS do zrozumienia, że dodawany element ma być jako całość oddzielnym rekordem tablicy. robi się przy pomocy przecinka:

C:\...ive\_scriptz :))o- $str1=1,4,6
C:\...ive\_scriptz :))o- $str2=1,4,6
C:\...ive\_scriptz :))o- $str=@()
C:\...ive\_scriptz :))o- $str+=,$str1
C:\...ive\_scriptz :))o- $str+=,$str2
C:\...ive\_scriptz :))o- $str
1
4
6
1
4
6

C:\...ive\_scriptz :))o- $str.Length
2

C:\...ive\_scriptz :))o- $str|gm

   TypeName: System.Object[]

choć wynik wygląda pozornie tak samo, kiedy sprawdzi się ilość elementów tablicy – są dwa. get-member pokazuje, że każdy z nich jest tablicą.

eN.

 

 

-o((:: sprEad the l0ve ::))o-

Zostaw komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Time limit is exhausted. Please reload CAPTCHA.