您好,登錄后才能下訂單哦!
豆子之前在腳本里面自定義對象的時候一般是這么考慮的,我需要創(chuàng)建一個數(shù)組,每次循環(huán)的時候把一個自定義的對象放進去,對于這個自定義的對象的結(jié)構(gòu),我需要創(chuàng)建一個哈希表,然后轉(zhuǎn)換成自定義對象。這個思路是沒錯,不過具體寫的時候有些小技巧。
比如說最近看的一個小挑戰(zhàn),其中需要把下面這個$list的值自定義一個對象保存出來。
$list = @" 1 Partridge in a pear tree 2 Turtle Doves 3 French Hens 4 Calling Birds 5 Golden Rings 6 Geese a laying 7 Swans a swimming 8 Maids a milking 9 Ladies dancing 10 Lords a leaping 11 Pipers piping 12 Drummers drumming "@
我寫的第一個版本是最啰嗦的:
$pp=$null $pp=[ordered]@{"Count"=$null;"Gift"=$null} $obj=New-Object -TypeName psobject -property $pp $result=@() $list.Split("`n") |ForEach-Object{ $temp=$obj | select * $temp.Count=$_.Split("")[0] $temp.Gift=$_.Substring($_.Split("")[0].Length) $result+=$temp } $result
后來改進了一下,不需要在循環(huán)外定義,直接在循環(huán)里面就可以創(chuàng)建哈希表并強制轉(zhuǎn)換了
$result2=@() $list -split "`n" | foreach { $split = $_ -split " ",2 $temp=[pscustomobject]@{Count=$split[0];Item = $split[1].trim()} $result2+=$temp } $result2
再后來,發(fā)現(xiàn)還可以更精簡一下
$gifts = $list -split "`n" | foreach { $split = $_ -split " ",2 [pscustomobject]@{Count=$split[0];Item = $split[1].trim()} } $gifts
注意第一個方式是PS 2.0時代的寫法,進入3.0以后就可以使用后面兩張簡單的寫法了。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。