Powershell: рд╕реБрдЭрд╛рд╡: рдЕрд╢рдХреНрдд- coalescing, null-рд╕рд╢рд░реНрдд рдкрд╣реБрдВрдЪ (null-soaking), null-conditional рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рд▓рд╛рдЧреВ рдХрд░реЗрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 2 рдорд╛рд░реНрдЪ 2017  ┬╖  71рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: PowerShell/PowerShell

рдЕрд╢рдХреНрдд- coalescing рдФрд░ null-conditonal рдкрд╣реБрдВрдЪ (null-soaking) рднрд╛рд╖рд╛ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдкрд░рд┐рд╡рд░реНрдзрди рд╣реЛрдЧрд╛ред

_Update_: @BrucePay рдЕрддрд┐рд░рд┐рдХреНрдд рд░реВрдк рд╕реЗ рд╢реВрдиреНрдп-рд╕рд╢рд░реНрдд _assignment_ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реИ, ?= - рдиреАрдЪреЗ рдЯрд┐рдкреНрдкрдгреА рджреЗрдЦреЗрдВ ред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд▓рд┐рдЦрдиреЗ рдХреЗ рдмрдЬрд╛рдп:

if ($null -ne $varThatMayBeNull) { $varThatMayBeNull } else { $fallbackValue }
#
if ($null -ne $varThatMayBeNull) { $varThatMayBeNull.Name } else { $null }

рдПрдХ рд▓рд┐рдЦрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:

$varThatMayBeNull ?? $fallbackValue  # null-coalescing
# 
$varThatMayBeNull?.Name   # null-conditional access, for Set-StrictMode -Version 2+
$varThatMayBeNull?[42]  # ditto, with indexing

рдкреБрди: рд╢реВрдиреНрдп-рд╕рд╢рд░реНрдд рдкрд╣реБрдВрдЪ: Set-StrictMode рдмрдВрдж (рдбрд┐рдлрд╝реЙрд▓реНрдЯ) рд╣реЛрдиреЗ рдХреЗ рд╕рд╛рде, рдЖрдк рдмрд╕ $varThatMayBeNull.Name рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рдХреЛрдИ рд╡рд┐рд╢реЗрд╖ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ; рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрджрд┐ Set-StrictMode -Version 2 рдпрд╛ рдЕрдзрд┐рдХ рдкреНрд░рднрд╛рд╡ рдореЗрдВ рд╣реИ, рддреЛ $varThatMayBeNull.Name _break_ рдФрд░ рдпрд╣реА рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдВ рдЕрд╢рдХреНрдд-рд╕рдВрдЪрд╛рд▓рдХ ( ?. ) рдорджрджрдЧрд╛рд░ рд╣реИ, рдЬреЛ рд╕реНрдкрд╖реНрдЯ рдЗрд░рд╛рджреЗ рдХреЛ рдирдЬрд░рдЕрдВрджрд╛рдЬ рдХрд░рдиреЗ рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрддрд╛ рд╣реИред $null рд╕рдВрдХреНрд╖рд┐рдкреНрдд рддрд░реАрдХреЗ рд╕реЗред


рдЦреБрд▓рд╛ рдкреНрд░рд╢реНрди :

$varThatMayBeNull?[42] рдЙрд╕ рдорд╛рдорд▓реЗ рдХреЛ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдЪрд░ $null , рд▓реЗрдХрд┐рди рдпрджрд┐ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЗрдВрдбреЗрдХреНрд╕ _must рдЕрд╕реНрддрд┐рддреНрд╡_ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд░рдгреА рддрддреНрд╡ рд╣реИред

рдЗрд╕рд▓рд┐рдП рдпрд╣ _indexing_ null-рд╕рд╢рд░реНрдд рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ - рдРрд╕рд╛ рдХреБрдЫ рдЬреЛ C # рдХрд░рддрд╛ рд╣реИ _not_ рд╕рдорд░реНрдерди, рд╕рдВрдпреЛрдЧ рд╕реЗ (рдЖрдкрдХреЛ .ElementAtOrDefault() )ред

рджреЛ рдореВрд▓ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ:

  • рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рд╕рд╛рде рдЖрдУ рдЬреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдПрдХ рдЧреИрд░-рдореМрдЬреВрдж _index_ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рдиреЗ рдХреЗ рдЗрд░рд╛рджреЗ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ:

    • рд╕рд╡рд╛рд▓ рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреМрди рд╕рд╛ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдЪреБрдирдирд╛ рд╣реИ, рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдЕрд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рдХрд╛рд░рдг ?[...] рдФрд░ [...]? рдПрдХ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реИрдВред
    • рд╢рд╛рдпрдж [...?] , рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдЬреАрдм рд▓рдЧрддрд╛ рд╣реИред
  • рдЧреИрд░-рдореМрдЬреВрдж рд╕реВрдЪрдХрд╛рдВрдХреЛрдВ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдореМрдЬреВрджрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░реЗрдВ, рдЬреИрд╕рд╛ рдХрд┐ Set-StrictMode рд╕реЗрдЯрд┐рдВрдЧ рджреНрд╡рд╛рд░рд╛ рдирд┐рд╣рд┐рдд рд╣реИ - рдиреАрдЪреЗ рджреА рдЧрдИ рддрд╛рд▓рд┐рдХрд╛ рджреЗрдЦреЗрдВ ред


рд╕рдВрдмрдВрдзрд┐рдд: рдЯрд░реНрдирд░реА рд╕рд╢рд░реНрдд рд▓рд╛рдЧреВ рдХрд░реЗрдВ

Issue-Enhancement Resolution-Fixed WG-Language

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

@rjmholt рдореИрдВрдиреЗ рдпрд╣рд╛рдБ рдкрд░ рдПрдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд┐рдпрд╛ред рдПрдХ рддреНрд╡рд░рд┐рдд рдмреНрд░реЗрдХрдбрд╛рдЙрди: 22,000,000+ рдЪрд░ рдирд╛рдореЛрдВ (рдЕрджреНрд╡рд┐рддреАрдп рдирд╣реАрдВ) рдХреЗ рд╕рд╛рде рд▓рдЧрднрдЧ 400,000 рд▓рд┐рдкрд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ, рдХреЗрд╡рд▓ ~ 70 рдЕрджреНрд╡рд┐рддреАрдп рдЪрд░ рдереЗ рдЬреЛ ? рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реБрдПред

рд╕рднреА 71 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

@ mklement0 рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдмрд┐рдирд╛ ""?
рд╢рд╛рдпрдж name() рдмрджрд▓ рдЬрд╛рдП?

@iSazonov : рдЕрдЪреНрдЫреА рдмрд╛рдд рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХреЗрд╡рд▓ ? рдмрд┐рдирд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ Set-StrictMode -Version 2 рдпрд╛ рдЕрдзрд┐рдХ рди рд╣реЛ _not_ рдкреНрд░рднрд╛рд╡ рдореЗрдВ рд╣реИ - рдореИрдВрдиреЗ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдкреЛрд╕реНрдЯ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рд┐рдВрдереЗрдЯрд┐рдХ рдЪреАрдиреА рдХреБрдЫ рдРрд╕реА рд╢рдХреНрддрд┐рдпрд╛рдВ рд╣реИрдВ рдЬреЛ рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдХрд╛ рдЖрдирдВрдж рд▓реЗ рд╕рдХрддреА рд╣реИрдВред рдкреНрд░рд╕реНрддрд╛рд╡ рдкрд░ +1ред

рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдХреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдирдореВрдиреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:

a="${b:-$c}"
a = b || c;
a = b or c
a := b ? c
a = b ? b : c;

рдпрд╣рд╛рдБ рддрдХ рдХреА

a = b if b else c

рд╕реЗ рдмреЗрд╣рддрд░ рд╣реИ

if (b) { a = b } else { a = c }

рдФрд░ рдЕрдХреНрд╕рд░ рдмрд╛рд░ рдЖрдкрдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рд╛рде рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ

a = (рдпрджрд┐ (b -n $ null) {b} рдФрд░ {c})

рд╕рднреА рдХреЛ рдЧрдВрджрд╛ рдФрд░ рдзрдорд╛рдХреЗрджрд╛рд░ рд▓рдЧрддрд╛ рд╣реИред

рдЪрд╛рд░реЛрдВ рдУрд░ рдХрд╛рдо рдХреЗ рд░реВрдк рдореЗрдВ рдЖрдЬ рдЦреБрдж рдХреЛ рдРрд╕рд╛ рдХрд░рддреЗ рдкрд╛рдпрд╛ред

`` `Powershell
$ рд╢рдмреНрдж = ($ null, "рджреЛ", "рддреАрди")ред рдЬрд╣рд╛рдБ (($ _-$ $ null}, "рдкрд╣рд▓реЗ")
`` ``

рдореИрдВ рдПрдХ рд╕рдорд╛рди рдкреИрдЯрд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ:

$word = ($null, "two", "three" -ne $null)[0]

@kfsone рдЖрдкрдХреЗ рдЙрджрд╛рд╣рд░рдг $a=(if ($b -ne $null) { $b } else { $c }) рдореЗрдВ рдПрдХ рдЫреЛрдЯреА рд╕реА рддреНрд░реБрдЯрд┐ рд╣реИред рдпрд╣ $a=$(if ($b -ne $null) { $b } else { $c }) рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рд╣рд╛рд▓рд╛рдВрдХрд┐ PowerShell рдХрд╛ рдПрдХрдорд╛рддреНрд░ рд╕рдВрд╕реНрдХрд░рдг рдЬрд╣рд╛рдВ $( ) рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА рд╕рдВрд╕реНрдХрд░рдг 1 рдерд╛ред v2 рдкрд░, рдЖрдк рдмрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

$a = if ($b) { $b } else { $c }

@bgshacklett рдХреНрдпрд╛ рдЖрдкрдХрд╛ рдорддрд▓рдм $word=($null,'two')[$null -ne 'three'] ?

рдпрд╣ рдереЛрдбрд╝рд╛ рджреБрд░реНрднрд╛рдЧреНрдпрдкреВрд░реНрдг рд╣реИ рдпрд╣ 6.1 рд╕реЗ 6.2 рд╕реЗ "рднрд╡рд┐рд╖реНрдп" рддрдХ рдЪрд▓рд╛ рдЧрдпрд╛ рд╣реИред

@ TheIncorrigible1 рдирд╣реАрдВ, рдпрджрд┐ рдЖрдк рдХреЙрдкреА рдФрд░ рдкреЗрд╕реНрдЯ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдореИрдВрдиреЗ рдКрдкрд░ рдЬреЛрдбрд╝рд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдпрд╣ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ $word рдХрд╛ рдореВрд▓реНрдп "рджреЛ" рдкрд░ рд╕реЗрдЯ рд╣реИред рдЗрд╕ рд╕реНрдЯреИрдХ рдУрд╡рд░рдлреНрд▓реЛ рдХреЗ рдЙрддреНрддрд░ рдореЗрдВ рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг рд╣реИ рдЬрд╣рд╛рдВ рдореИрдВрдиреЗ рдкрд╣рд▓реА рдмрд╛рд░ рдкреИрдЯрд░реНрди рджреЗрдЦрд╛ рдерд╛:
https://stackoverflow.com/a/17647824/180813

рдЬрдмрдХрд┐ рдЧрдбрд╝рдмрдбрд╝реА рд╣реИрдХ-рдЕрд░рд╛рдЙрдВрдб 20 рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдореБрдЭреЗ рдЕрдкреАрд▓ рдХреА рдХрд┐ рдПрдХ рдкрдВрдЬреАрдХреГрдд рдФрд░ / рдпрд╛ рдПрдХ RIPE-DB рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдпрд╛ рд╕рдВрдЧрдарди рд░рд┐рдХреЙрд░реНрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдкреАрд▓ рдХреА рд╣реИ, рдЬреЛ рдореИрдВ рд╢рдХреНрддрд┐рдпрд╛рдВ рд╕реЗ рдЙрдореНрдореАрдж рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рд╡рд╣ рдХреБрдЫ рд╣реИ рдЬреЛ рдореЗрд░реЗ рд╕рд╣рдпреЛрдЧрд┐рдпреЛрдВ рдХреЛ рднрд╛рд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рддрд╛ рд╣реИ рдмрд▓реНрдХрд┐ рдЙрдирдореЗрдВ рднрдп рдкреИрджрд╛ рдХрд░реЗрдВред

рдореЗрд░рд╛ рд▓рд┐рдЯрдорд╕ рдЯреЗрд╕реНрдЯ рдпрд╣ рд╣реИ: рдХреНрдпрд╛ рдореИрдВ рдЗрд╕реЗ рдЕрдкрдиреЗ рдЯреИрдмрд▓реЗрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ 3 рдмрдЬреЗ рдирдП рд╕рд╛рд▓ рдХреА рд╕реБрдмрд╣ рдкрдврд╝рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛, рдЬрдмрдХрд┐ рдлреЛрди рдкрд░ ceo рдХреЗ рд╕рд╛рде рдореБрдЭреЗ рд░реЛрддреЗ рд╣реБрдП рдмрддрд╛рдпрд╛ рдХрд┐ рд╣рдо рдХрд┐рддрдиреЗ рдорд┐рд▓рд┐рдпрди рдбреЙрд▓рд░ рдПрдХ рд╕реЗрдХрдВрдб рдореЗрдВ рдЦреЛ рд░рд╣реЗ рд╣реИрдВред

(рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛: рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЕрдиреБрднрд╡ рдХрд╛ рдПрдХ рдвреАрд▓рд╛ рдЕрддрд┐рд╢рдпреЛрдХреНрддрд┐ рдерд╛ рдЬрдм рддрдХ рдХрд┐ рдореИрдВрдиреЗ рдлреЗрд╕рдмреБрдХ рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ рдФрд░ рдПрдХ рддреНрд╡рд░рд┐рдд рддреНрд╡рд░рд┐рдд рд░рд┐рд╕рд╛рд╡ рд╕реЗ рд╡рд╛рдкрд╕ рдЖрдпрд╛, рдпрд╣ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рдХрд┐, 2 рдорд┐рдирдЯ рдореЗрдВ рдореИрдВ рдЪрд▓рд╛ рдЧрдпрд╛ рдерд╛, рд╣реЙрд▓реИрдВрдб рдХреА рдЖрдмрд╛рджреА рд╕реЗ рдЕрдзрд┐рдХ рд▓реЛрдЧреЛрдВ рдиреЗ рдПрдХ рдЦрд╛рд▓реА рдорд┐рд▓ рдЧрдпрд╛ рдерд╛ рд╕рдорд╛рдЪрд╛рд░ рдлрд╝реАрдбред рдпрд╣ рдореЗрд░рд╛ рдХреЛрдб рдирд╣реАрдВ рдерд╛ рдФрд░ рдЧрд▓рддреА рдмрд╣реБрдд рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЯреЗрдореНрдкрд▓реЗрдЯ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рд╕реА ++ рдорд╛рдирдХ рдореЗрдВ рд░рд┐рдЯрд░реНрди рдПрдХреНрд╕ рдмрдирд╛рдо рд░рд┐рдЯрд░реНрди (рдПрдХреНрд╕) рдХреЗ рд╢рдмреНрджрд╛рд░реНрде рдореЗрдВ рдПрдХ рдорд┐рдирдЯ рдХрд╛ рдмрджрд▓рд╛рд╡ рдерд╛, рдФрд░ "рдХреНрдпрд╛ рдЖрдк рдЗрд╕ рдХреЛрдб рдХреЛ 2 рдорд┐рдирдЯ рдХреЗ рд╕рд╛рде рдкрдврд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рд╕рдордп рд╕реАрдорд╛, рдПрдХ рдкреВрд░реНрдг рдореВрддреНрд░рд╛рд╢рдп рдФрд░ рдЖрдкрдХреЗ рдХрдВрдзреЗ рдкрд░ рдбрдЪ рд╡реНрдпрдХреНрддрд┐ рдХреА рдмрд┐рд▓реНрд▓реА рдХреЗ рдЪрд┐рддреНрд░реЛрдВ рдХреЛ рдкрд╣рдиреЗ рд╣реБрдП рд╣рд░ рдЦрдЯрд┐рдпрд╛ рдХрд╛ рднрд╛рдЧреНрдп ??? "рд╢рд╛рдВрдд рдХреЗ рд░реВрдк рдореЗрдВ рдзреНрд╡рдирд┐ рдирд╣реАрдВ рдереА"

рд╣рд╛рдБред PS рдореЗрдВ рдХреБрдЫ рд╕рд╛рдл-рд╕реБрдерд░реА рддрд░рдХреАрдмреЗрдВ рд╕рдВрднрд╡ рд╣реИрдВ рдЬреЛ рдПрдХ рдЪреБрдЯрдХреА рдореЗрдВ рдмрдбрд╝реА рд╣реИрдВ рдпрд╛ рдЕрдЧрд░ рдЖрдкрдХреЛ рдПрдХрдореБрд╢реНрдд рд╢реЙрд░реНрдЯрд╣реИрдВрдб рдХреА рдЬрд░реВрд░рдд рд╣реИред

рдмрдирд╛рдП рд░рдЦрдиреЗ рдпреЛрдЧреНрдп рдХреЛрдб рдХреЗ рд▓рд┐рдП, рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ C # рдЬреИрд╕реЗ рд╕реНрдкрд╖реНрдЯ рдЕрд╢рдХреНрдд-рд╕рдВрдЪрд╛рд▓рдХ рдСрдкрд░реЗрдЯрд░ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред рдореЗрд░реЗ рд▓рд┐рдП рдореБрдЦреНрдп рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ - рд╣рдо рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ? ? рдкрд╣рд▓реЗ рд╕реЗ рд╣реА Where-Object (рдЬрд┐рддрдирд╛ рдореИрдВ рдорд┐рдЯрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛, рдпрд╣ рдмрд╣реБрдд рд╕рд╛рдорд╛рдиреНрдп рдЙрдкрдпреЛрдЧ рдореЗрдВ рд╣реИ)ред рдзреНрдпрд╛рди рд░рд╣реЗ, % рдХреЛ ForEach-Object рдмрджрд▓реЗ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдорд╛рдкрд╛рдВрдХ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рдмрд╛рдзрд╛ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ рдХрдо рд╕реЗ рдХрдо ? рдПрдХ рд╢реВрдиреНрдп-рд╕рдВрдЪрд╛рд▓рдХ рдСрдкрд░реЗрдЯрд░ рд╣реЛрдиреЗ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рднреА рд╕рдВрднрд╡ рд╣реЛрдЧрд╛ред рдареАрдХ; рдЗрд╕реЗ рдХреЗрд╡рд▓ рдРрд╕реЗ рднрд╛рд╡реЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд╡реНрдпрд╛рдЦреНрдпрд╛рдпрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬрд╣рд╛рдБ Where-Object рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡реИрд╕реЗ рднреА рдорд╛рдиреНрдп рдирд╣реАрдВ рд╣реИред

@ vexx32 :

рдХрдо рд╕реЗ рдХрдо _syntactically_ ?? рдареАрдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо _expression_ рдореЛрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЬрдмрдХрд┐ ? , рдПрдХ рдХрдорд╛рдВрдб [рдЙрдкрдирд╛рдо] рдХреЗ рд░реВрдк рдореЗрдВ, рдХреЗрд╡рд▓ _argument_ рдореЛрдб рдореЗрдВ рдорд╛рдиреНрдпрддрд╛ рдкреНрд░рд╛рдкреНрдд рд╣реИред
рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдкреНрд░рддреАрдХ рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рднреНрд░рдо рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдкрд╣рд▓реА рдмрд╛рд░ рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдХрд┐ рдХреЛрдИ рдкреНрд░рддреАрдХ рд╡рд┐рднрд┐рдиреНрди рд╕рдВрджрд░реНрднреЛрдВ рдореЗрдВ рджреЛрд╣рд░рд╛ рдХрд░реНрддрд╡реНрдп рдХрд░рддрд╛ рд╣реИред

рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рд░реВрдк рд╕реЗ, рдирд▓-рднрд┐рдЧреЛрдиреЗ рдХреЗ рд▓рд┐рдП ?. рдФрд░ ?[] рдХрд░рдирд╛ рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ рдПрдХ рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ PowerShell рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдПрдХ рдЪрд░ рдирд╛рдо рдореЗрдВ рдЧреИрд░-рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╡рд░реНрдг рдХреЗ рд░реВрдк рдореЗрдВ ? рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

PS> $foo? = @{ bar = 1 }; $foo?.bar   # !! $foo? is a legal variable name
1

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЗрд╕реЗ рдПрдХ рдмрдХреЗрдЯ 3: рдЕрдирд▓рдХреА рдЧреНрд░реЗ рдПрд░рд┐рдпрд╛ рдкрд░рд┐рд╡рд░реНрддрди рдорд╛рдирд╛ рдЬрд╛рдПрдЧрд╛ред

рдореИрдВ рдпрд╣ рдирд╣реАрдВ рдХрд╣ рд╕рдХрддрд╛ рдХрд┐ рдореИрдВрдиреЗ рдХрднреА рдХрд┐рд╕реА рдХреЛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рджреЗрдЦрд╛ рд╣реИ? рдПрдХ рдЪрд░ рдирд╛рдо рдореЗрдВ ... рди рд╣реА рдореИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЧрд▓рдд рд╣реЛрдЧрд╛ред рд▓реЗрдХрд┐рди рд╣рд╛рдБ, рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкреНрд░рдпреЛрдЬреНрдп рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдЗрд╕реЗ рд▓рд╛рдиреЗ рдореЗрдВ рдереЛрдбрд╝реА рджреЗрд░ рд╣реЛ рдЧрдИ рд╣реИ, рд▓реЗрдХрд┐рди рдмреИрд╢ рдиреЗ рдЕрдкрдиреЗ рдкреИрд░рд╛рдореАрдЯрд░ рдкреИрд░рд╛рдореАрдЯрд░ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдЗрд╕ (рдФрд░ рдХреБрдЫ рдЕрдиреНрдп рдорд╛рдорд▓реЛрдВ) рдХреЛ рд╕рдВрднрд╛рд▓рд╛ рд╣реИ: https://www.tldp.org/LDP/abs/html/parameter-substitution.htmlред

рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдмрд╣реБрдд рд╕реА рдЪреАрдЬреЛрдВ рдХреЗ рдХрд╛рд░рдг рд╕реАрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рднрд╛рд▓реВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╣ рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░реВрдк рд╕реЗ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╣реИред рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ PowerShell рдЪрд░ рдХреЗ рд╕рд╛рде рдмреНрд░реЗрд╕рд┐рдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рди рд╣реА рдЗрд╕ рд╕рдЯреАрдХ рдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реЛрдЧрд╛, рди рд╣реА рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рднрд╛рд╖рд╛ рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рдЕрдиреБрднрд╡ рдХреЗ рд╕рд╛рде рдлрд┐рдЯ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдЙрдкрдпреЛрдЧреА рдбреЗрдЯрд╛ рдмрд┐рдВрджреБ рдЬреИрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИред

@bgshacklett :

рд╣рд╛рдВ, рдкреИрд░рд╛рдореАрдЯрд░ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╣реИ, рд▓реЗрдХрд┐рди, рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдпрд╣ рди рдХреЗрд╡рд▓ _learn_ рдХреЗ рд▓рд┐рдП рдПрдХ рднрд╛рд▓реВ рд╣реИ, рдмрд▓реНрдХрд┐ _remember_ рдХреЗ рд▓рд┐рдП рднреА рд╣реИред

рддреЛ рдЬрдмрдХрд┐ рдмрд╛рд╢ рдХреЗ _features_ рдЕрдХреНрд╕рд░ рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛрддреЗ рд╣реИрдВ, рдЙрдирдХрд╛ _syntactic form_ рдЕрдХреНрд╕рд░ рдЖрд░реНрдХрди рд╣реЛрддрд╛ рд╣реИ, рдпрд╛рдж рд░рдЦрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ PowerShell рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫрд╛ рдлрд┐рдЯ рдирд╣реАрдВ рд╣реИред

_Brace expansion_ (рдЬреИрд╕реЗ, a{1,2,3} рдореЗрдВ bash рдХреЗ рд╡рд┐рд╕реНрддрд╛рд░ a1 a2 a3 ) рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рд╕реБрд╡рд┐рдзрд╛ рдЬрд┐рд╕рдХрд╛ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдореИрдВ PowerShell рдореЗрдВ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫрд╛ рд▓рдЧреЗрдЧрд╛ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ, рд▓реЗрдХрд┐рди PowerShell рдЙрдкрдпреБрдХреНрдд рд╕рд╛рде рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ - # 4286 рджреЗрдЦреЗрдВ

рдореИрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд╣рдорддред рдореИрдВрдиреЗ рдЗрд╕реЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдзрд┐рдХ рд╕рд╛рдордиреЗ рд▓рд╛рдпрд╛ рдХрд┐ рдХреИрд╕реЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдПрдХ рд╕рдЯреАрдХ рд╕рдорд╛рдзрд╛рди рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрд╣реАрдВ рдФрд░ рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рд╕рдВрднрд╡рддрдГ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдиреНрдп рдСрдкрд░реЗрдЯрд░ рд╣реИ:

$x ?= 12

рдЕрдЧрд░ рдпрд╣ рд╕реЗрдЯ рдирд╣реАрдВ рд╣реИ (рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ) рддреЛ $x рд╕реЗрдЯ рд╣реЛрдЧрд╛ред рдпрд╣ "рдЗрдирд┐рд╢рд▓рд╛рдЗрдЬрд╝рд░ рдкреИрдЯрд░реНрди" рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ, рдЬреЛ рдкрд╛рд░рдВрдкрд░рд┐рдХ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдЖрдо рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди (рдбрд╛рдпрдирд╛рдорд┐рдХ рд░реВрдк рд╕реЗ рд╕реНрдХреЛрдкреНрдб) рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЧреЛрд▓реЗ, рдЙрдкрдХрд░рдг рдмрдирд╛рдирд╛, рдЖрджрд┐ред рдпрд╣ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЖрдо рд╣реИ рдЬреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕реЗрдЯ рд╣реЛрддреА рд╣реИ рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рдЗрд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред ред (рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреИрд░рд╛рдореАрдЯрд░ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝рд░ рдмрд╣реБрдд рд╡реНрдпрд╛рдкрдХ рд╣реИрдВред)

рдЧреБрдгреЛрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░:

$obj.SomeProperty ?= 13

рдпрджрд┐ рдпрд╣ рдореМрдЬреВрдж рдирд╣реАрдВ рдерд╛, рддреЛ рдПрдХ рдиреЛрдЯ рд╕рдВрдкрддреНрддрд┐ SomeProperty рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░реЗрдЧрд╛ рдФрд░ рдЬреЛрдбрд╝реЗрдЧрд╛ред

рдФрд░ - рдордиреЛрд░рдВрдЬрди рдХреЗ рд▓рд┐рдП - -or рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдЪрд░ рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рдкрд░ рдПрдХ рдФрд░ рднрд┐рдиреНрдирддрд╛:

$x -or ($x = 3.14) > $null

$x ?= 12 рдПрдХ рдорд╣рд╛рди рд╡рд┐рдЪрд╛рд░ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИред

рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рд╣реБрдЖ рд╣реИ рдХрд┐ рд╣рдо рд╢рд╛рдпрдж рди рдХреЗрд╡рд▓ contain_ рдХреЗ рд▓рд┐рдП рдЕрдЧрд░ рдПрд▓рдПрдЪрдПрд╕ рдирд╣реАрдВ _exist_ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рднреА рдЕрдЧрд░ рдпрд╣ _does рдореМрдЬреВрдж рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣реЛрддрд╛ рд╣реИ рдЗрди рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЗ рд╕рднреА рдЖрд╡реЗрджрди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП $null (рд╕рд╛рде [System.Management.Automation.Internal.AutomationNull]::Value рдХреА рддрд░рд╣ рд╡реНрдпрд╡рд╣рд╛рд░ $null рдЗрд╕ рд╕рдВрджрд░реНрдн рдореЗрдВ

рдиреЛрдЯ рдкреНрд░реЙрдкрд░реНрдЯреА SomeProperty рдХреЛ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдЖрд░рдВрдн рдХрд░реЗрдВ

рдЙрд╕ рдирд╕ рдореЗрдВ, $obj.SomeProperty ?= 13 рдореЗрд░реЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ _only_ рдЕрдЧрд░ .SomeProperty рдореМрдЬреВрдж рд╣реИ рдФрд░ $null , рддреЛ рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдЖрдк рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдХреЗ рд╕рд╛рде рднреА рд╕рдВрдкрддреНрддрд┐ рдирд╣реАрдВ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ (рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, _hasthables_ рдХреЗ рд▓рд┐рдП) рдирд┐рд╣рд┐рдд рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдирд┐рд░реНрдорд╛рдг рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ)ред

рдЪрд░реНрдЪрд╛ рдХрд┐рдП рдЧрдП рд╕рднреА рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЛ рдПрд▓рдПрдЪрдПрд╕ рдХреЛ рд╕рдЦреНрдд-рдореЛрдб рдЕрд╕реНрддрд┐рддреНрд╡ рдХреА рдЬрд╛рдБрдЪ рд╕реЗ рдЫреВрдЯ рджреЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

рдореИрдВ рдкреАрдЫреЗ рдХреНрдпреЛрдВ StrictMode рдПрдХ рд╕рдВрдкрддреНрддрд┐ рдЬреЛ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рд╕реЗ рдЖрдк рдмрдВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдХреЗ рдЗрд░рд╛рджреЗ / рддрд░реНрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдБред рдХреНрдпрд╛ $x.pretnd рдЬреИрд╕реЗ рдЯрд╛рдЗрдкреЛ рдХреЛ рдкрдХрдбрд╝рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рд╣реИ? рдХреНрдпрд╛ assert(x != null) рдЬреИрд╕реА рдзрд╛рд░рдгрд╛рдУрдВ рдХреА рдЬрд╛рдБрдЪ рдХрд░рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рд╣реИ? рдХреНрдпрд╛ рдЖрдкрдХреЗ рдХреЛрдб рдореЗрдВ рдЧрд▓рддреА рд╕реЗ $null рдкреНрд░рдЪрд╛рд░ рдХрд░рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рд╣реИ?

null-soaking (ред) рдорджрджрдЧрд╛рд░ рд╣реИ, рд╕реНрдкрд╖реНрдЯ рдЗрд░рд╛рджреЗ рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд░реВрдк рдореЗрдВ $ null рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░реЗрдВред

рдХреНрдпрд╛ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдЬреЛ . рд╕рд┐рдЧреНрдирд▓ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдиреЙрдирд╕реНрдЯреНрд░рд┐рдХреНрдЯ рдореЛрдб рдореЗрдВ рд╣реИ? рдпрджрд┐ рдЖрдк рд╕рдЦреНрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рддреЗ рдереЗ, рддреЛ рдЖрдк .Name рдореМрдЬреВрджрд╛ рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ рдХрд░ рд╕рдХрддреЗ рдереЗ, рдкрд╣рд▓реЗ рдЬрд╛рдБрдЪ рдирд╣реАрдВ рдХрд░рдХреЗ, рдЖрдкрдиреЗ рдкрд╣рд▓реЗ рд╣реА рд╕реНрдкрд╖реНрдЯ рдЗрд░рд╛рджреЗ рдХрд╛ рд╕рдВрдХреЗрдд рджрд┐рдпрд╛ рдерд╛ рдХрд┐ рдЬрд╛рдБрдЪ рдЖрдкрдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рдереАред

рдпрджрд┐ рд╕реНрдЯреНрд░рд┐рдХреНрдЯрдореЛрдб рдХрд╛ рдПрдХ рдЙрджреНрджреЗрд╢реНрдп рд╣реИ, рдЬрд╣рд╛рдВ рдПрдХ рдЧреИрд░-рдореМрдЬреВрдж рд╕рдВрдкрддреНрддрд┐ рддрдХ рдкрд╣реБрдВрдЪрдирд╛ рдФрд░ $null рдХрд░рдирд╛ рдордирд╛ рд╣реИ, рддреЛ рд╡рд╣реА рддрд░реНрдХ ?. рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдФрд░ рдЙрд╕реА рдХрд╛рд░рдг рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рдЕрдкрд╡рд╛рдж рдХреЛ рдлреЗрдВрдХ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП ред рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдХреНрдпреЛрдВ рдирд╣реАрдВ?

рдЕрд╢рдХреНрдд рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде, рдЖрдк рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ:

$result = Invoke-RestMethod -Uri 'https://example.org/api/test'
$test = $result?.Name

рдХреНрдпрд╛ рдпрд╣ рдЬрд▓реНрджреА рд╕реЗ рдЕрдиреБрд╢рдВрд╕рд┐рдд рдпрд╛ рдореБрд╣рд╛рд╡рд░реЗрджрд╛рд░ рд╣реЛ рдЬрд╛рдПрдЧрд╛ рд╣рдореЗрд╢рд╛ рд╣рд░ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП ?. рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ " . рдЬреИрд╕рд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд╕рдЦреНрддреА рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдкрд╡рд╛рдж рдирд╣реАрдВ рдлреЗрдВрдХреЗрдВрдЧреЗ"?

рдХреНрдпрд╛ рдЪрд░ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд┐рдиреНрдпрд╛рд╕ рдпреЛрдЧреНрдп рдХрдбрд╝реЗрдкрди рдХреА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЗрдЪреНрдЫрд╛ рд╣реИ, рддрд╛рдХрд┐ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЖрдк рдЕрдкрдиреА рд▓рд┐рдкрд┐ # StrictMode SkipMemberExistenceCheck рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдПрдХ рдШреЛрд╖рдгрд╛ рдХрд░ рд╕рдХреЗрдВ, рдпрд╛ unstrict code рдмреНрд▓реЙрдХ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдПрд╕реНрдХреЗрдк рд╣реИрдЪ рд╡рд┐рд╢реЗрд╖рддрд╛ рдЖрдо рддреМрд░ рдкрд░? [рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрдЪреНрдЫрд╛ рд╕реА # рд╢реИрд▓реА рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдореЗрд░рд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ]

рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, @HumanEquivalentUnit

рдХреНрдпрд╛ $x.pretnd рдЬреИрд╕реЗ рдЯрд╛рдЗрдкреЛ рдХреЛ рдкрдХрдбрд╝рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рд╣реИ?

рдореИрдВ рдбрд┐рдЬрд╛рдЗрди рдХреЗ рдЗрд░рд╛рджреЗ рд╕реЗ рдмрд╛рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛, рд▓реЗрдХрд┐рди рдпрд╣реА рдореЗрд░реЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ - Set-StrictMode -Version 1 _variables_ (рдХреЗрд╡рд▓) рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдЕрдиреБрд░реВрдк рд╣реИред

рдЪрд░ рдХреЗ рд╕рд╛рде рдпрд╣ рдЙрдирдХреЗ _existence_ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ, рди рдХрд┐ рдпрд╣ рдХрд┐ рдХреНрдпрд╛ рдореВрд▓реНрдп $null , рдФрд░ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдХреА рдЬрд╛рдБрдЪ рдЙрд╕реА рдкреИрдЯрд░реНрди рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рддреА рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдирд┐рдХрдЯрддрдо рдбрд╛рдпрдиреЗрдорд┐рдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ рднрд╛рд╖рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдорд┐рд▓ рд╕рдХрддреА рд╣реИ рдЬреЛ рдПрдХ рд╕рдВрдХрд▓рд┐рдд рд╕рдВрдХрд▓рд┐рдд рднрд╛рд╖рд╛ _compile time_ рдкрд░ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░реЗрдЧреАред


рдХреНрдпрд╛ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИред рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЧреИрд░-рд╕рдВрдХреЗрдд рдореЛрдб рдореЗрдВ рд╕рдВрдХреЗрдд? рдпрджрд┐ рдЖрдк рд╕рдЦреНрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рддреЗ рдереЗ, рддреЛ рдЖрдк рдЬрд╛рдБрдЪ рдХрд░ рд╕рдХрддреЗ рдереЗред рдкрд╣рд▓реЗ рдирд╛рдо рдореМрдЬреВрдж рдерд╛

рд╣рд╛рдВ, рд▓реЗрдХрд┐рди рдЧреИрд░-рд╕рдЦреНрдд рдореЛрдб рдореЗрдВ рдЖрдк рдЙрдкрд░реНрдпреБрдХреНрдд рдЕрд╕реНрддрд┐рддреНрд╡ рдХреА рдЬрд╛рдВрдЪ рд╕реЗ рдЧреБрдЬрд░рддреЗ рд╣реИрдВ, рдФрд░ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдкрд░реАрдХреНрд╖рдг рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХрд╛рдлреА рдмреЛрдЭрд┐рд▓ рд╣реИ - рдФрд░ рдПрдХ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╕реБрд╡рд┐рдзрд╛ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдзреАрдореА рдЧрддрд┐ рд╕реЗред

рдкрд╣рд▓реЗ рдЬрд╛рдБрдЪ рди рдХрд░рдХреЗ, рдЖрдкрдиреЗ рдкрд╣рд▓реЗ рд╣реА рд╕реНрдкрд╖реНрдЯ рдЗрд░рд╛рджреЗ рдХрд╛ рд╕рдВрдХреЗрдд рджреЗ рджрд┐рдпрд╛ рдерд╛ рдХрд┐ рдЬрд╛рдБрдЪ рдЖрдкрдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рдереАред

рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐, Set-StrictMode -Version 2 рдпрд╛ рдЙрдЪреНрдЪрддрд░ рдХреЗ рд╕рд╛рде, рдЖрдкрдХреЛ рдорд┐рд▓рддрд╛ рд╣реИ:

  • рд╕рджрд╕реНрдп рдЕрд╕реНрддрд┐рддреНрд╡ рдХреА рдЬрд╛рдБрдЪ рдХрд╛ рд▓рд╛рдн _by default_
  • рдСрдкреНрдЯ рдЖрдЙрдЯ рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк, _ .? рд╕рд╛рде, рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд░реВрдк рд╕реЗ рдорд╛рдВрдЧ

рдЖрдк рдЕрдкрдиреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ # StrictMode SkipMemberExistenceCheck рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдШреЛрд╖рдгрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ unstrict code рдПрдХ рдмреНрд▓реЙрдХ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдПрд╕реНрдХреЗрдк рд╣реИрдЪ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ

рд╕рдВрдмрдВрдзрд┐рдд: Set-StrictMode рдХреА рд╡рд░реНрддрдорд╛рди рдЧрддрд┐рд╢реАрд▓ рд╕реНрдХреЛрдкрд┐рдВрдЧ рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рд╣реИ; рдПрдХ _lexical_ рд╕рдЦреНрдд рдореЛрдб рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреА рдЖрд░рдПрдлрд╕реА рдорд╕реМрджрд╛ @lzybkr рджреЗрдЦреЗрдВ: https://github.com/PowerShell/PowerShell-RFC/blob/master/1-Draft/RFC0003-Lexical-Strict-Mode.md

рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕рджрд╕реНрдп рдЕрд╕реНрддрд┐рддреНрд╡ рдХреА рдЬрд╛рдБрдЪ рдХрд╛ рд▓рд╛рдн

PS рдореЗрдВ рдХреЛрдб рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рд╕рджрд╕реНрдп рдХреА рдЬрд╛рдБрдЪ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЬрдм рд╡реЗ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ рддреЛ $ null рд░рд┐рдЯрд░реНрди рджреЗрддреЗ рд╣реИрдВред рдпрд╣ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдПрдХ рд▓рд╛рдн рд╣реИ, рдЬрд┐рд╕реЗ рдЖрдк рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╕рджрд╕реНрдп рдЕрд╕реНрддрд┐рддреНрд╡ рдкрд░реАрдХреНрд╖рдг рдХреЛ $x.psobject.properties... рд╕рд╛рде рд▓рд┐рдЦрдиреЗ рд╕реЗ рднреА рдмрдЪ рд╕рдХрддреЗ рд╣реИрдВ рдпрджрд┐ рдЖрдк рдЪреБрдирддреЗ рд╣реИрдВред рд╕реНрдЯреНрд░рд┐рдХреНрдЯрдореЛрдб рдЙрд╕ рд▓рд╛рдн рдХреЛ рджреВрд░ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЕрд╕реНрддрд┐рддреНрд╡ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдиреЗ рдореЗрдВ рдмрд╛рдзрд╛ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред рддрдм рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рд╕рджрд╕реНрдп рдЕрд╕реНрддрд┐рддреНрд╡ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдиреЗ рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рджреЗрдиреЗ рдХреЗ рдмрдЬрд╛рдп, ?. рдЖрдкрдХреЛ рд╣рдореЗрд╢рд╛ . рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╕рдорд╛рдзрд╛рди рдкреНрд░рджрд╛рди рдХрд░реЗрдЧрд╛ред рдФрд░ рдЕрдЧрд░ рдпрд╣ рдорд╛рдпрдиреЗ рд░рдЦрддрд╛ рд╣реИ рдХрд┐ рд╕рджрд╕реНрдп рдореМрдЬреВрдж рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдЕрднреА рднреА рдЕрд▓рдЧ рд╕реЗ рдХреЛрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рд▓реЗрдХрд┐рди рдпрд╣ рдореБрдЭреЗ рд╡рд┐рдзрд┐ рдХреЙрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рдкреВрдЫрддрд╛ рд╣реИ:

$x.pretend     -> $null
$x.pretend()   -> Exception MethodNotFound
$x?.pretend  -> $null
$x?.pretend()   -> ____ what goes here? $null?

set-strictmode -version 2
$x.pretend -> Exception PropertyNotFoundStrict
$x.pretend()  -> Exception MethodNotFound
$x?.pretend  -> $null
$x?.pretend()   -> ____  ?

рдЕрд░реНрдерд╛рдд ?. рдиреЙрди-рдХрдбрд╝рд╛рдИ рдореЗрдВ рдкреНрд░реЙрдкрд░реНрдЯреА рд▓реБрдХрдЕрдк рдХреЗ рд▓рд┐рдП . рдХреЗ рд╕рдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдЧреИрд░-рд╕рд╕реНрдкреЗрдВрд╕реЛрдб рдореЗрдВ рд╡рд┐рдзрд┐ рдХреЙрд▓ рдХреЗ рд▓рд┐рдП . рдЕрд▓рдЧ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░реЗрдВрдЧреЗ, рдЬрд┐рд╕рд╕реЗ рдпрд╣ рдЕрддрд┐ рд╕реВрдХреНрд╖реНрдо рд╣реЛ рдФрд░ рди рд╣реЛ рдПрдХ рдбреНрд░реЙрдк-рдЗрди рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрдиред рдХреНрдпрд╛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ ?. рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдЖрдкрдХреЗ рдкрд╛рд╕ рдпрд╣ рдмрддрд╛рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рдХреЛрдИ рд╡рд┐рдзрд┐ рд▓рд╛рдЧреВ рдХреА рдЧрдИ рдереА, рдпрд╛ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реБрдЖ рдерд╛? рдЧреБрдгреЛрдВ рдХреЛ рдЧреЗрдЯреНрдЯрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЧреЗрдЯрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдЖрдВрддрд░рд┐рдХ рд░рд╛рдЬреНрдп рдХреЛ рдореНрдпреВрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбреЙрдЯрдиреЗрдЯ рдореЗрдВ рдпрд╣ рд╕рдореНрдореЗрд▓рди рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд┐рдзрд┐ рдХреЙрд▓ рдХреЛ рдореНрдпреВрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рд╣реИред ?. рдЖрдкрдХреЛ рдХреЛрдИ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдпрджрд┐ рдЖрдкрдиреЗ рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдЙрддреНрдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рд╣реЛ?

рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЖрдк рд╡рд╛рдВрдЫрд┐рдд рд▓рд╛рдн рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдмреЗрд╣рддрд░, ?? рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рд╕рдВрднрд╛рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП PropertyNotFoundException рдФрд░ MethodNotFound рдЕрдкрд╡рд╛рдж рд╕реАрдзреЗ рдмрд╛рдИрдВ рдУрд░ рдХреА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╕реЗ (рд▓реЗрдХрд┐рди рдЕрдиреНрдп рддрд░реАрдХреЛрдВ рдХреЗ рдЕрдВрджрд░ рдЙрдард╛рдП рдЧрдП рдЕрдкрд╡рд╛рдж рдирд╣реАрдВ), рд╕рд╛рде рд╣реА $ рдХреЛ рд╕рдВрднрд╛рд▓рдирд╛ред nulls, рдФрд░ ?. рдмрд┐рд▓рдХреБрд▓ рдирд╣реАрдВ рд╣реИред рдЬреИрд╕реЗ

$varThatMayBeNull ?? $fallbackValue # null-coalescing
#
$varThatMayBeNull.Name ?? $fallbackvalue    # catching PropertyNotFoundStrict exception
$varThatMayBeNull.Name ??  # default fallback is $null
$varThatMayBeNull.Method() ??  # catching MethodNotFound Exception

# and potentially addressing the index case too
$varThatMayBeNull.first.second[3].Method() ??  # catching MethodNotFound Exception, or index not found Exception

рдФрд░ рдлрд┐рд░, ?. рдмрдЬрд╛рдп рдПрдХ рд╕рджрд╕реНрдп рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рдпрд╛ рдХрд┐рд╕реА рд╕рдВрдкрддреНрддрд┐ рддрдХ рдкрд╣реБрдВрдЪрдирд╛, рдпрд╣ рдкреВрдЫрдиреЗ рдХрд╛ рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рддрд░реАрдХрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдХреЛрдИ рд╕рджрд╕реНрдп рдореМрдЬреВрдж рд╣реИ, рдПрдХ [рдмреВрд▓] рд▓реМрдЯрд╛ рд░рд╣рд╛ рд╣реИред

?? рдФрд░ ?. рд╕рдорд╛рди рд╕рд┐рдВрдЯреИрдХреНрд╕ рдЬреЛрдбрд╝ рдХреЗ рд╕рд╛рде рдЖрдк рдХрдо рднреНрд░рдорд┐рдд рдУрд╡рд░рд▓реИрдк рдХреЗ рд╕рд╛рде рдЕрдзрд┐рдХ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВред

рд╕реНрдЯреНрд░рд┐рдХреНрдЯрдореЛрдб рдЙрд╕ рд▓рд╛рдн рдХреЛ рдЫреАрди рд▓реЗрддрд╛ рд╣реИ рдФрд░ рдЕрд╕реНрддрд┐рддреНрд╡ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдиреЗ рдХреА рдмрд╛рдзрд╛ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИ

рдПрдХ рд╡реНрдпрдХреНрддрд┐ рдХреА рдмрд╛рдзрд╛ рджреВрд╕рд░реЗ рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рд▓рд╛рдн рд╣реИ:
рдпрд╣ рд╕рдм рдЗрд╕ рдмрд╛рдд рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдХреНрдпрд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ _by default_:

  • рдпрджрд┐ рдЖрдкрдХреЛ рд╡рд┐рд╢реНрд╡рд╛рд╕ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдХреЛрдб рдореЗрдВ рдХреЛрдИ _typos_ рдирд╣реАрдВ рд╣реИрдВ - рд╣рд░ рддрд░рд╣ рд╕реЗ, _default_ рд╡реНрдпрд╡рд╣рд╛рд░ (рд╕рдЦреНрдд рдореЛрдб рдмрдВрдж) рдХрд╛ рд▓рд╛рдн рдЙрдард╛рдПрдВ - рдФрд░ рдЖрдкрдХреЛ .? (_property рдФрд░ рдПрдХреНрд╕реЗрд╕ рдХреЗ рд▓рд┐рдП) рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреА - рджреЗрдЦреЗрдВ рдЕрдЧрд▓реА рдЯрд┐рдкреНрдкрдгреА рдлрд┐рд░ рд╕реЗ _method рдХреЙрд▓_ рдФрд░ _indexing_)ред

    • _Personal_ рдиреЛрдЯ рдкрд░: рдореИрдВ _variable_ рдирд╛рдореЛрдВ рдореЗрдВ рдЯрд╛рдЗрдкреЛрд╕ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП Set-StrictMode -Version 1 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ -Version 2 рдпрд╛ рдЕрдзрд┐рдХ рдХрд╖реНрдЯрдкреНрд░рдж рд╣реИ, рдореБрдЦреНрдпрддрдГ # 2798 (рдЬреЛ рдПрдХ рдмрдЧ рдЬреЛ рд╕реНрд╡рддрдВрддреНрд░ рд╣реИ) рдХреЗ рдХрд╛рд░рдг рдпрд╣ рдкреНрд░рд╕реНрддрд╛рд╡)ред
  • рдпрджрд┐ рдЖрдк рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдиреЗ (a) рдЖрдкрдиреЗ рдкреНрд░реЙрдкрд░реНрдЯреА рдХреЗ рдирд╛рдо рдФрд░ / рдпрд╛ (b) рдХреЛ рдЧрд▓рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдЖрдкрдХрд╛ рдХреЛрдб рдЧрд▓рддреА рд╕реЗ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рд╕рдВрдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ, рд╕рдВрд╕реНрдХрд░рдг 2 рдпрд╛ рдЙрдЪреНрдЪрддрд░ рдХреЗ рд▓рд┐рдП рд╕рдЦреНрдд рдореЛрдб рд╕реЗрдЯ рдХрд░реЗрдВред ред

    • рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдХрд┐ _currently_ рдЗрд╕реЗ рдЗрди рдЪреЗрдХреЛрдВ рдХреЗ __ рдХреЗ рд▓рд┐рдП рдмреЛрдЭрд┐рд▓ рдмрдирд╛рддрд╛ рд╣реИ _ _ рдорд╛рдБрдЧ_,
    • рдЬреЛ рдареАрдХ-рдареАрдХ рдХреНрдпреЛрдВ рд╣реИ, рдЕрд╢рдХреНрдд-рд╕рд╢рд░реНрдд рдкрд╣реБрдВрдЪ рдХреА рд╢реБрд░реБрдЖрдд рдпрд╣рд╛рдВ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХреА рдЬрд╛ рд░рд╣реА рд╣реИ: рдорд╛рдВрдЧ рдХреЛ рдЪреБрдирдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ _easy_ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдПред

рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдПрдХ рд╕рджрд╕реНрдп рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдЕрд▓рдЧ рдЙрдкрдпреЛрдЧ рдХрд╛ рдорд╛рдорд▓рд╛ рд╣реИ рдЬреЛ рдкреНрд░рднрд╛рд╡ рдореЗрдВ рд╕рдЦреНрдд рдореЛрдб рдХреЗ рдмрд╛рд╡рдЬреВрдж рдПрдХ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред

_Method call_ рдХреЗ рд▓рд┐рдП, рдЬреЛ рдУрдкреА рдХрд╡рд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ:

_Method рдХреЙрд▓_ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, $varThatMayBeNull.Method() ) рдФрд░ _indexing_ (рдЬреИрд╕реЗ, $varThatMayBeNull[$index] ) рджреЛ рдорд╛рдорд▓реЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рд╕рдЦреНрдд рдореЛрдб рдмрдВрдж рдпрд╛ рд╕рдВрд╕реНрдХрд░рдг 1 рдкрд░ рд▓рд╛рднрд╛рдиреНрд╡рд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рджреЛрдиреЛрдВ рдорд╛рдорд▓реЗ рд╡рд░реНрддрдорд╛рди рдореЗрдВ _vvariably_ рддреНрд░реБрдЯрд┐ рдХрд╛ рдХрд╛рд░рдг рдмрдирддреЗ рд╣реИрдВ рдПрдХреНрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рдореВрд▓реНрдп $null ред

рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдЧреБрдгреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рд╣реЛрдЧрд╛ - $varThatMayBeNull?.Method() - рдФрд░ рдЕрдиреБрдХреНрд░рдордг рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реВрдк - $varThatMayBeNull?[$index] - рдЬреИрд╕рд╛ рдХрд┐ C # рдореЗрдВред

_Uddate_: рдпрджрд┐ рдЕрдиреБрдЧрд╛рдореА рдЕрд╢рдХреНрдд рд╣реИ, рддреЛ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдХрд╛ рджреВрд╕рд░рд╛ рдкрд╣рд▓реВ рд╣реИ, рд▓реЗрдХрд┐рди рджрд┐рдП рдЧрдП рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдореЗрдВ рддрддреНрд╡ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, $arr = 0,1; $arr[2] )ред рд╕рдЦреНрдд рдореЛрдб рд╕рдВрд╕реНрдХрд░рдг 2 рдпрд╛ рдиреАрдЪреЗ рдХреЗ рд╕рд╛рде, рдпрд╣ $null рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдВрд╕реНрдХрд░рдг 3 рдпрд╛ рдЙрдЪреНрдЪрддрд░ рдореЗрдВ рдпрд╣ рдПрдХ рддреНрд░реБрдЯрд┐ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИ, рдФрд░ рдЗрд╕ рддреНрд░реБрдЯрд┐ рд╕реЗ рднреА рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдПрдХ рдЪреБрдиреМрддреА рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реИ - рдЕрджреНрдпрддрди рдУрдкреА рджреЗрдЦреЗрдВ, рдЬреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╢рд╛рдпрдж [...?] рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░рддрд╛ рд╣реИред

рдФрд░, рд╣рд╛рдБ, рдореИрдВ $null рд▓рд┐рдП рднреА рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХреНрд╕реЗрд╕ рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдмрдирд╛рдКрдВрдЧрд╛, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рддрд░реАрдХреЛрдВ рдХреЗ рд▓рд┐рдП рднреА - рдлрд┐рд░, рдЖрдк _explicitly_ рд╕рд┐рдЧреНрдирд▓ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдпрджрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рдПрдХреНрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рддреЛ рдпрд╣ рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдареАрдХ рд╣реИ $null рдпрд╛ рдпрджрд┐ рдРрд╕рд╛ рдХреЛрдИ рдРрд░реЗ рддрддреНрд╡ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИред

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ C # рдХреЗ рджреВрд╕рд░реЗ рдЕрд░реНрде рдореЗрдВ рдХреЛрдИ рдЕрд╢рдХреНрдд-рдЕрдиреБрдХреНрд░рдордг рдирд╣реАрдВ рд╣реИред

рдпрд╣ рдЕрд╢рдХреНрдд-рд╕рд╢рд░реНрдд рдЕрдиреБрдХреНрд░рдордг рд╣реИ, рдмрд╕ рдпрд╣ рдмрд┐рд▓рдХреБрд▓ рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдк рдХреИрд╕реЗ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рд╕реА # рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ (рдореБрдЭреЗ рдкреВрд░рд╛ рдпрдХреАрди рд╣реИ, рдХрдо рд╕реЗ рдХрдо ...) array?[0] рдЬреЛ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ "рдЕрд╢рдХреНрдд рд╕рд░рдгреА / рд╕рдВрдЧреНрд░рд╣" рдореБрджреНрджреЗ рдХреЛ рджрд░рдХрд┐рдирд╛рд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдмрд╕ рд╢реВрдиреНрдп рджреЗрддрд╛ рд╣реИред

рд▓реЗрдХрд┐рди рд╣рд╛рдБ, рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдБ рдХрд┐ рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИред рдпрд╣ рд╣рдореЗрдВ рдЕрдкрд╡рд╛рдж рд╣реИрдВрдбрд▓рд┐рдВрдЧ рд╕реЗ рдмрдЪрд╛рддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдХреЛрдб рдХреЛ рдмрд╣реБрдд рд╕реНрдкрд╖реНрдЯ рдФрд░ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд░рдЦрддрд╛ рд╣реИред

@ vexx32 , рдЬреЛ рдХрд┐ null-conditional indexing рдХрд╛ _one_ рдкрд╣рд▓реВ рд╣реИ: рдпрджрд┐ array array?[0] null , рддреЛ рдЕрдиреБрдХреНрд░рдордг рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - C # рдореЗрдВ рднреА, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рд░рд╛рдЬреНрдп рдХрд░рддреЗ рд╣реИрдВред

рдореИрдВ (рдЕрджреНрдпрддрди: _also_) рд╢реВрдиреНрдп-рд╕рд╢рд░реНрдд рдЕрдиреБрдХреНрд░рдордг рдХреЗ _other_ рдкрд╣рд▓реВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣рд╛ рдерд╛: рд╡рд╣ рдорд╛рдорд▓рд╛ рдЬрд╣рд╛рдВ array array?[0] _not_ null рд▓реЗрдХрд┐рди рдпрд╣ рд╕реВрдЪрдХрд╛рдВрдХ 0 рдкрд░ рддрддреНрд╡ рд╣реИ

рдпрд╣ рдмрд╛рдж рдХреА рдмрд╛рдд рд╣реИ рдХрд┐ C # рдХреЛ рдореЗрд░реА рдЬрд╛рдирдХрд╛рд░реА рдореЗрдВ рдирдЬрд░рдЕрдВрджрд╛рдЬ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдлрд┐рд░ рднреА рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред

рдХреНрдпрд╛ рдЖрдк рдЗрди рджреЛ рдкрд╣рд▓реБрдУрдВ рдХреЛ рдЕрд▓рдЧ рдирд╛рдо рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рд╢рдмреНрджрд╛рд╡рд▓реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪ рд╕рдХрддреЗ рд╣реИрдВ?

рдПрдХ рдФрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрд╢реНрдпреВ рдХрд╛ рдХреЛрдб $_.Description[0].Text рд╕реЗ $_?.Description[0?]?.Text рдЬреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдмрд╣реБрдд рд╕реБрдВрджрд░ рдирд╣реАрдВ рд╣реИ; рдФрд░ рдореЗрд░реЗ рдЕрдиреНрдп рд╕реБрдЭрд╛рд╡ рдХрд┐ рдХреИрд╕реЗ ?? рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕реЗ $_.Description[0].Text ?? рдЬрд╛рдПрдЧрд╛, рдЬреЛ рдХрд┐ рд╡рд┐рд╖рдп рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдЪреНрдЫрд╛ рд╣реИ, рдФрд░ - рдпрджрд┐ рд╕рдВрднрд╡ рд╣реЛ рддреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдВ - рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рдХрд┐рд╕реА рднреА рд▓реБрдХрдЕрдк рдмрд┐рдВрджреБ рдкрд░ рд╡рд┐рдлрд▓рддрд╛рдУрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдирд╛ рд╕рднреА рдПрдХ рдмрд╛рд░ рдореЗрдВ , рдФрд░ рдлрд┐рд░ рднреА рдЖрдкрдХреЛ рдпрд╣ рдЪреБрдирдиреЗ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдХреНрдпрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕рдореЗрдВ рдХреЗрд╡рд▓ $null рддрдХ рд╕реАрдорд┐рдд рд╣реЛрдиреЗ рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдЕрд▓рдЧ рдХрдордмреИрдХ рд╣реЛрдЧрд╛ред

рдПрдХ рддрд░рдл рдХреЗ рд░реВрдк рдореЗрдВ, рдХреНрдпрд╛ рдпрд╣ ?. рд╕рд┐рдВрдЯреИрдХреНрд╕ рдореЗрдВ рд╕реНрдерд┐рд░ рдЧреБрдгреЛрдВ рдФрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдирд╛рд▓реЙрдЧ рд╣реИ, рдЕрд░реНрдерд╛рдд $t = [int]; $t::MaxValu; $t::Pars("1") , рдХреНрдпрд╛ рдпрд╣ ?: рдпрд╛ ?:: ?

рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рд╕реВрдЪрдХрд╛рдВрдХ рдХреЗ рд╕рд╛рде рд╕рд░рдгреА рдЕрдиреБрдХреНрд░рдордг рдХреЗ рд▓рд┐рдП рд╡рд╛рдВрдЫрд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХреНрдпрд╛ рд╣реЛрдЧрд╛? $array[0,4?,1,2] рдЬрд╣рд╛рдВ рд╣рд░ рдПрдХ рдХреЛ рд╡рд┐рдлрд▓ рд╣реЛрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреА рдЬрд╛ рд╕рдХрддреА рд╣реИ, рдпрд╛ $array[0,4,1,2?] рдХреЗрд╡рд▓ рдкреВрд░реЗ рдмрд╣реБрдд рд╕реЗ рд╕рдлрд▓ рдпрд╛ рдЕрд╕рдлрд▓ рд╣реЛрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рд╣реИ?

рдореБрдЭреЗ рдкрд╣рд▓реЗ рдПрдХ рдХрджрдо рд╡рд╛рдкрд╕ рд▓реЗрдирд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдЙрди рдкрд╣рд▓реБрдУрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рд▓рд┐рдпрд╛ рд╣реИ рдЬреЛ рдЕрд▓рдЧ рд╣реЛрдиреЗ рдХреЗ рд▓рд╛рдпрдХ рд╣реИрдВ, рдХрдо рд╕реЗ рдХрдо рд╡реИрдЪрд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ:

  • _Null-value_-рд╕рд╢рд░реНрдд рд╕рджрд╕реНрдп рдпрд╛ рдЗрдВрдбреЗрдХреНрд╕ рдПрдХреНрд╕реЗрд╕, рдЬреИрд╕рд╛ рдХрд┐ C #:

    • рдпрджрд┐ рдХрд┐рд╕реА рдореВрд▓реНрдп рдХреЛ рдПрдХреНрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рддреЛ рдпрд╣ $null , рдЗрд╕рдХреЗ рд╕рджрд╕реНрдпреЛрдВ рдпрд╛ рдЗрдВрдбреЗрдХреНрд╕ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреЗ рдкреНрд░рдпрд╛рд╕реЛрдВ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░реЗрдВ рдФрд░ $null рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░реЗрдВред
  • _Member-рдЕрд╕реНрддрд┐рддреНрд╡_ рд╕рд╢рд░реНрдд рд╕рджрд╕реНрдп рдпрд╛ PowerShell рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдЕрднрд┐рдЧрдо:

    • рдпрджрд┐ рдХреЛрдИ рдорд╛рди рдПрдХреНрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рддреЛ _non- $null _ рд╣реИ, рдЧреИрд░-рдореМрдЬреВрджрд╛ _members_ (рдЧреБрдг, рд╡рд┐рдзрд┐ рдХреЙрд▓, рдЕрдиреБрдХреНрд░рдордг) рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рдкреНрд░рдпрд╛рд╕реЛрдВ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░реЗрдВ рдЬреЛ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИрдВред

рдиреЛрдЯ: рд╕рдВрдХреНрд╖рд┐рдкреНрддрддрд╛ рдХреЗ рд▓рд┐рдП, рдореИрдВ _member_ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ, рдХреБрдЫ рд╣рдж рддрдХ рдпрд╣рд╛рдБ рднреА рд╕рдВрдЧреНрд░рд╣ рдХреА рд╣реЛрдиреЗ рд╡рд╛рд▓реА рд╡рд╕реНрддреБрдУрдВ рдХреЗ _elements_ рдХреЛ рд╕рдорд╛рд╣рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рдбреЙрдЯ рдиреЛрдЯреЗрд╢рди рдХреЗ рдмрдЬрд╛рдп _indexing_ рдХреЗ рд╕рд╛рде рдПрдХреНрд╕реЗрд╕ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред

рдпрджрд┐ рдЖрдк рдЖрд╢реНрд╡рд╕реНрдд рд╣реИрдВ рдХрд┐ рдЖрдкрдХреЗ рдХреЛрдб рдореЗрдВ рдХреЛрдИ рдЯрд╛рдЗрдкреЛрд╕ рдирд╣реАрдВ рд╣реИрдВ - рд╣рд░ рддрд░рд╣ рд╕реЗ, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рд▓рд╛рдн рдЙрдард╛рдПрдВ (рд╕рдЦреНрдд рдореЛрдб рдмрдВрдж) - рдФрд░ рдЖрдкрдХреЛ рдЗрд╕рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреА? (рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП

@ mklement0 рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк " рдЕрдкрдиреЗ рдХреЛрдб рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдЦреНрдд рдореЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдПрдХ рд╡реНрдпрдХреНрддрд┐ " рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдЪрд░реНрдЪрд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдореИрдВ рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ " рдХреЛрдИ рдФрд░ рдореЗрд░реЗ рдХреЛрдб рдХреЛ рдХрдбрд╝реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ рдЪрд▓рд╛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпрд╛ рдмрджрд▓рд╛рд╡ рдореЗрд░реЗ рдХреЛрдб рдХреЛ рдЙрдирдХреЗ рд▓рд┐рдП рднреА рдХрд╛рдо рдХрд░реЗрдВрдЧреЗ?" "рдФрд░ рдпрд╣ рдореБрдЭреЗ рдЕрд▓рдЧ рддрд░реНрдХ рдХреЗ рдиреАрдЪреЗ рд▓реЗ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рд╕рд╛рде ?. рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЙрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рддреЛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛрдЧрд╛ . рдФрд░ рдореЗрдХрдЕрдк рдХреЛрдб рднреА StrictMode рдХрд┐ рдореИрдВ рднреА рдЗрд╕реЗ рд╣рд░ рдЬрдЧрд╣ рдЖрджрддрди рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдореЗрдВ рдХрд╛рдо; рдореИрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рдЦреЛрддрд╛ рдФрд░ рд╕рдВрдЧрддрддрд╛ рд╣рд╛рд╕рд┐рд▓ рдХрд░рддрд╛ рд╣реВрдВред рдореБрдЭреЗ рдбрд░ рд╣реИ рдХрд┐ рд╕рднреА PowerShell рдХреЛрдб рдЙрд╕ рддрд░рд╣ рд╕реЗ рдмрджрд╕реВрд░рдд рд╣реЛ рдЬрд╛рдПрдВрдЧреЗ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЕрдзрд┐рдХ рдорд╛рдорд▓реЛрдВ рдореЗрдВ "рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ"ред

рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдбреНрд░реЙрдк-рдЗрди рд░рд┐рдкреНрд▓реЗрд╕рдореЗрдВрдЯ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рд╛рдЗрд▓реЗрдВрд╕ рдиреЙрди-рдХрдбрд╝рд╛рдИ рдореЗрдВ рд╡рд┐рдзрд┐ рдХреЙрд▓ рд▓реБрдХрдЕрдк рдХреЛ рд╡рд┐рдлрд▓ рдХрд░ рджреЗрддрд╛ рд╣реИ, рдФрд░ рд╕рд╛рдЗрд▓реЗрдВрд╕ рдореЗрдВ рдкреНрд░реЙрдкрд░реНрдЯреА рд▓реБрдХрдЕрдк рдХреЛ рд╡рд┐рдлрд▓ рдХрд░ рджреЗрддрд╛ рд╣реИ - рдпрд╣ рд╕рджрд╕реНрдп рд▓реБрдХрдЕрдк рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд╕рд╛рдзрд╛рд░рдг рдмрд╛рд░реАрдХрд┐рдпреЛрдВ, рдПрдХ рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░реВрдк рд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рдСрдкрд░реЗрд╢рди рдХреЛ рдЬреЛрдбрд╝рддрд╛ рд╣реИред рдпрд╣ рдХрд┐рд╕реА рдХреЛ рднреА рдорджрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЙрд╕ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рдХрд░ рд╕рдЦреНрдд рдЬрд╛рдВрдЪ рд╕реЗ рд▓рд╛рдн рдЙрдард╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИред рдпрд╣ рдкрд░реНрдпрд╛рдкреНрдд рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рд▓реЛрдЧреЛрдВ рдХреА рдорджрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рдЬрдЯрд┐рд▓рддрд╛ рдХреЗ рд▓рд┐рдП рдЬреЛрдбрд╝рддрд╛ рд╣реИред рдФрд░ рдХреЛрдб рдХреЛ рдЕрдзрд┐рдХ рд╕рдВрдЧрдд рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ, рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ "рдЗрд╕реЗ рдЕрдирджреЗрдЦрд╛ рдХрд░реЗрдВ рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВ" рддреЛ рдЗрд╕реЗ рдЦрд╛рдбрд╝реА рдореЗрдВ рдкрдХрдбрд╝рдирд╛ рдХрд╛рдлреА рдордЬрдмреВрдд рд╣реИред

PowerShell рдРрд╕реА рдЪреАрдЬрд╝реЛрдВ рдХреЛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ C # рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЬреИрд╕реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЪрд░ рд╕реЗрдЯ рдХрд░рдирд╛, рдпрд╛ рдЕрдкрд╡рд╛рдж рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд┐рд╕рд╛рд▓ рд░рдЦрдирд╛ рдФрд░ рдкрд░реНрджреЗ рдХреЗ рдкреАрдЫреЗ рдЪреБрдк рд╣реЛ рдЬрд╛рдирд╛ред рдПрдХ рдмреЗрд╣рддрд░ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреЛ рд╕рджрд╕реНрдп рд▓реБрдХрдЕрдк рдХреЛ рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рдмрдирд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдЦреНрдд рд╕реБрд░рдХреНрд╖рд╛ рдЬрд╛рдВрдЪ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЬреЛ рд▓реЛрдЧ рдЪреЗрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЙрдирдХреЗ рдкрд╛рд╕ рдЖрд╕рд╛рди рдЬреАрд╡рди рд╣реЛ рдФрд░ рдЬреЛ рд▓реЛрдЧ рдЪреЗрдХ рд╕реЗ рдкрд░реЗрд╢рд╛рди рдереЗ рдЙрдирдХреЗ рдкрд╛рд╕ рдЖрд╕рд╛рди рдЬреАрд╡рди рднреА рд╣реЛред

@HumanEquivalentUnit рдЗрди рдЪреАрдЬреЛрдВ рдХреЛ рдХреИрд╕реЗ рдЪреБрдк

$prop = $item?.Method().PropIwant ?? 'PropActionFailed'

рд╡реА

$prop = if ($null -ne $item) {
    $propIwant= $item.Method().PropIwant
    if ($null -eq $propIwant) {
        'PropActionFailed'
    }
    else {
        $propIwant
    }
}

рдФрд░ рдпрд╣ рдорд╛рдорд▓рд╛ рдЕрд╕рд╛рдорд╛рдиреНрдп рдирд╣реАрдВ рд╣реИред рдпрд╛ рдЖрдк рд╕рд┐рд░реНрдл $ErrorActionPreference = 'Stop' рдлреЗрдВрдХ рджреЗрдВ рдФрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ try/catch рдореЗрдВ рдкреВрд░реА рдЪреАрдЬрд╝ рдХреЛ рд▓рдкреЗрдЯреЗрдВ рддрд╛рдХрд┐ рдирд▓ рдХреА рдЬрд╛рдБрдЪ рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рдП рдЬреЛ рдПрдХ рдЦрд░рд╛рдм рдкреИрдЯрд░реНрди (рдЕрдкрд╡рд╛рдж-рдЪрд╛рд▓рд┐рдд рддрд░реНрдХ) рд╣реИред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рднрд╛рд╖рд╛ рдХрд╛ рднрд╡рд┐рд╖реНрдп рд╣реИ, рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣рдо 5.1 рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдЪреАрдЬреЛрдВ рдХреЛ рдмрджрд▓ рд░рд╣реЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рдЕрдзрд┐рдХ рдЧреЛрдж рд▓реЗрдиреЗ рд╡рд╛рд▓реЗ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдХреЛрдб рдкрдврд╝рдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реИред

@ mklement0 рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк "рдЕрдкрдиреЗ рдХреЛрдб_ рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдЦреНрдд рдореЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╡реНрдпрдХреНрддрд┐" рд╕реЗ рдЪрд░реНрдЪрд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдореИрдВ рдЗрд╕ рджреГрд╢реНрдп рд╕реЗ "_someone рдореЗрд░реЗ рдХреЛрдб рдХреЛ рдХрдбрд╝реЗрдкрди рдореЗрдВ рдЪрд▓рд╛ рд╕рдХрддрд╛ рд╣реВрдВ, рдХреНрдпрд╛ рдмрджрд▓рд╛рд╡ рдореЗрд░реЗ рдХреЛрдб рдХреЛ рдЙрдирдХреЗ рд▓рд┐рдП рднреА рдХрд╛рдо рдХрд░реЗрдВрдЧреЗ?" _ "

рдХреНрдпрд╛ рд╣рдо "рд╕реЗрдЯ-рдУрдпреВрдУ рдкрд╛рдЗрдкрдлреЗрд▓" (рдмреИрд╢ рд╕рдЦреНрдд рдореЛрдб) рд╕рдордХрдХреНрд╖ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ?

a- рдЪрд░ рд▓реБрдХ-рдЕрдк рдХреА рд╕реАрдорд╛ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рдпрд╣ рдирд╣реАрдВ рджреЗрдЦрддрд╛ рдХрд┐ рдЖрдкрдХреЛ рдХреНрдпреЛрдВ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рджрд╕реНрдп рд▓реБрдХрдЕрдк рдкрд░ рдПрдХ рд╕рд░рд▓ рдЕрд╢рдХреНрддрддрд╛ рдПрдХ рдмреБрд░реА рдмрд╛рдд рд╣реЛрдЧреА, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рджрд╕реНрдп рд▓реБрдХрдЕрдк if (result is null) рд╕реЗ рдЕрдзрд┐рдХ рдорд╣рдВрдЧрд╛ рд╣реИ)
b- рдкрд╛рд░реНрд╕рд░ рдХреЛ рдХреЛрдбрд░ / рдХреЛрдбрдмреНрд▓реЙрдХ рдкрд░ [Strict] рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдЙрдиреНрд╣реЗрдВ рдЗрд╕ рддрд░рд╣ рдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╛рд░реНрд╕рд░ рдХреЛ рдмрддрд╛рдПрдВ,
c- рд╕реНрдЯреНрд░рд┐рдХреНрдЯрдиреЗрд╕ рд╕реНрдХреЛрдк рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ: рдЬреЛ рдХреЛрдб рд╕рдЦреНрдд рдирд╣реАрдВ рд╣реИ, рд╡рд╣ рд╕рдЦреНрдд рдирд╣реАрдВ рд╣реИред

рдпрджрд┐ рдореИрдВрдиреЗ рд╕рдЦреНрдд рдХреЛрдб рд▓рд┐рдЦрд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреЗ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдо рдореЗрдВ рд╕реЗ рдПрдХ рдиреЗ рдЧрд▓рддреА рдХреАред рдпрд╛ рддреЛ рдореИрдВрдиреЗ рдХреЛрдб рдореЗрдВ рдПрдХ рд▓рд╛рдкрддрд╛ рдЪрд░ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЬрд┐рд╕рдХрд╛ рдореИрдВрдиреЗ рдХрднреА рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ рдпрд╛ рдЖрдкрдиреЗ рдореЗрд░реА рдмреБрд░реА рддрд░рд╣ рд╕реЗ рдбрд┐рдЬрд╝рд╛рдЗрди рдХреА рдЧрдИ рдПрдкреАрдЖрдИ рдХреЛ рдЧрд▓рдд рд╕рдордЭрд╛ рд╣реИ рдЬреЛ рдЙрди рдЪрд░ рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдореЗрд░реЗ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдкрд╛рд░рд┐рдд рдирд╣реАрдВ рд╣реБрдП рд╣реИрдВ рдФрд░ рдЖрдк рдПрдХ рдЪрд░ рдХреЛ рдЖрдмрд╛рдж рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рд░рд╣реЗ рд╣реИрдВ рдЬрд┐рд╕рдХреА рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ .. ред

# Their code
Function Log($Message) { Write-Host $Massege }  # not strict

# My code
[Strict]
Function DebugMsg
{
  Param([String] $Message)
  if ($DEBUG) { Log Host $Message }
}

# Your code
DebugMsg "Hello"  # you didn't define DEBUG, and by saying strict I expressed a contract whereby the variable MUST be defined.

"рд▓реЙрдЧ" рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕рдЦреНрдд рдЪрд┐рд╣реНрдирд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдЯрд╛рдЗрдкреЛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╢рд┐рдХрд╛рдпрдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ

ЁЯдФ рдЕрдм рдЬрдм рдЖрдк рдЗрд╕рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдПрдХ [Strict()] рд╡рд┐рд╢реЗрд╖рддрд╛ рдПрдХ _awesome_ рддрд░реАрдХрд╛ рд╣реЛрдЧрд╛ рдЬреЛ рд╕реНрдХреЛрдк-рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рддрд░реАрдХреЗ рд╕реЗ рд╕рдЦреНрдд рдореЛрдб рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдЧрд╛ред рдХрд┐ рд╕рдЦреНрдд рдореЛрдб рдореБрджреНрджреЛрдВ рдкрд░ рдЙрд╕ рдЕрдиреНрдп рдореБрджреНрджреЗ рдХреЗ рдзрд╛рдЧреЗ рдореЗрдВ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдореИрдВ рдЗрд╕реЗ рдЦреЛрджрддрд╛ рд╣реВрдБ рдФрд░ рдпрд╣рд╛рдБ рд╡рд╛рдкрд╕ рд▓рд┐рдВрдХ рдХрд░рддрд╛ рд╣реВрдБ ...

@ TheIncorrigible1 " рдпрд╣ рдЗрди рдЪреАрдЬреЛрдВ рдХреЛ рдЪреБрдк рдХреИрд╕реЗ рдХрд░рддрд╛ рд╣реИ? " рдЧреИрд░-рд╕рдЦреНрдд рдореЛрдб рдореЗрдВ $null.x рдЪреБрдк рд╣реИ, $null.x() рдПрдХ рдЕрдкрд╡рд╛рдж рд╣реИред ?. рдЪрд░реНрдЪрд╛ рдХреЗ рд╕рд╛рде, $null?.x рдЪреБрдк рд╣реИ, $null?.x() рдЪреБрдк рд╣реИред

рддреЛ рдЖрдкрдХреЗ рдкрд╛рд╕ . рдЬреЛ рдХрд┐ C # рдХреЗ ?. рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд╕рд┐рд╡рд╛рдп рд╕рдЦреНрдд-рдореЛрдб рдореЗрдВ рдЬрд╣рд╛рдВ рдпрд╣ рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ рдлреЗрдВрдХрддрд╛ рд╣реИред рдлрд┐рд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ ?. рдЬреЛ C # рдХреЗ ?. рдЬреИрд╕реЗ рд╕рдЦреНрдд рдореЛрдб рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЬреИрд╕реЗ PowerShell рдХрд╛ . рдЧреИрд░-рд╕рдЦреНрдд рдореЛрдб рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЬреЛ PowerShell рдХреЗ . рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рд╡рд┐рдзрд┐ рдХреЙрд▓ рдХреЗ рд▓рд┐рдП ?. рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдмреЗрд╣рддрд░ рд╣реИ рдФрд░ рдЙрди рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдореЗрдВ рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧреА рд╣реИ)ред

рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдкрд╡рд╛рдж рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдФрд░ рдЕрд╢рдХреНрдд рдЪреЗрдХ рдХрд╛ рднрд╛рд░ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛: рдЗрд╕рдХреЗ рдмрдЬрд╛рдп: $prop = $item?.Method().PropIwant ?? 'PropActionFailed'

рдЖрдкрдХрд╛ рддрд░реАрдХрд╛ рдХреЙрд▓ рдлреЗрдВрдХ рд╕рдХрддрд╛ рд╣реИ, рдпрд╛ $ null рд╡рд╛рдкрд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ PropIWant рдЧрд╛рдпрдм рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЖрдкрдХреЛ рдЕрднреА рднреА рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛:

$prop = try {
    $item?.Method()?.PropIwant ?? 'PropActionFailed'  
} catch [someMethodException] {
    'PropActionFailed'
}

рдореЗрд░реЗ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд ?? (рдпрджрд┐ рдпрд╣ рдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛ рд╕рдВрднрд╡ рдерд╛) рдХреЗ рд╕рд╛рде, рдФрд░ ?. рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдпрд╣ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдЬрд╛рдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╡рд┐рдзрд┐ рдЕрдкрд╡рд╛рджреЛрдВ рдХреЗ рд╕рдВрднрд╛рд╡рд┐рдд рдорд╛рдорд▓реЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рддрд╛ рд╣реИ "рд╕рдлрд▓рддрд╛ рдпрд╛ рдирд╣реАрдВ" рдФрд░ рдХреЛрдИ рд╡рд┐рд╕реНрддреГрдд рддреНрд░реБрдЯрд┐ рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдирд╣реАрдВ рд╣реИред

$prop = $item.Method().PropIWant ?? 'AnythingFailed'

рдпрджрд┐ рдЖрдк рдЕрдзрд┐рдХ рдЧреЛрдж рд▓реЗрдиреЗ рд╡рд╛рд▓реЗ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдХреЛрдб рдкрдврд╝рдиреЗ рдореЗрдВ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реИред

PowerShell рдореЗрдВ рдЖрдк рдХрд┐рддрдиреА рдмрд╛рд░ . рдЯрд╛рдЗрдк рдХрд░рддреЗ рд╣реИрдВ? рдЖрдк рдХрд┐рддрдиреА рдмрд╛рд░ рдирдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдпрд╣ рд╕рдордЭрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ . рдФрд░ ?. рдмреАрдЪ рдХреНрдпрд╛ рдЕрдВрддрд░ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдмрддрд╛рдПрдВ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рд╣рд░ рдмрд╛рд░ . рд╣рдореЗрд╢рд╛ рдЯрд╛рдЗрдк рдХрд░рдиреЗ рдкрд░ рдЕрдВрддрд░ рд╣реЛрдЧрд╛ ?

"рдУрд╣, рдпрд╣ рдХреИрд╕реЗ рд╣реБрдЖ?" "рд╡реЗрд▓ рдЗрди C # . рдиреЗ рд▓рд╛рдкрддрд╛ рд╕рджрд╕реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХ рджрд┐рдпрд╛, рдЗрд╕рд▓рд┐рдП рдЙрдиреНрд╣реЛрдВрдиреЗ ?. рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд┐рдпрд╛, рдЬреЛ рдХрд┐ рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рдерд╛ред рдЗрд╕рд▓рд┐рдП рдЙрдиреНрд╣реЛрдВрдиреЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ PowerShell рдореЗрдВ . рдлреЗрдВрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рддрдм рдЙрдиреНрд╣реЛрдВрдиреЗ рд╕рдЦреНрдд рдореЛрдб рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд┐рдпрд╛, рдЬреЛ . C # рдХреА рддрд░рд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдлреЗрдВрдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдЙрд╕ рд╕рдВрджрд░реНрдн рдореЗрдВ, рд▓реЗрдХрд┐рди рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╕рджрд╕реНрдпреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЪрд┐рдВрддрд╛рдЬрдирдХ рдФрд░ рдкрд░реЗрд╢рд╛рди рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдерд╛ рдФрд░ рдХреЛрдИ рднреА рдЗрд╕реЗ рдЯрд╛рдЗрдк рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛; рдЙрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╕рд┐рд░-рдкрд░ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рдиреЗ рдФрд░ рдХрдбрд╝реЗрдкрди рд╕реЗ рд▓рд╛рднрд╛рдиреНрд╡рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдмрдирд╛рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдЙрдиреНрд╣реЛрдВрдиреЗ рдЙрд╕ рдмрд╛рдд рдХреЛ рдЪрдХрдорд╛ рджрд┐рдпрд╛ рдФрд░ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдкреВрдЫреЗ рдЧрдП рдХрдбрд╝реЗрдкрди рд╕реЗ рдбрд░рдХрд░ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХреЗ рдмрдЬрд╛рдп рд╕реА # ?. , рдЬреЛ рдХрд┐ рд╣рд▓реНрдХреЗ рд╕реЗ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ рдЖрдкрдХреЗ рд▓рд┐рдП, рд▓реЗрдХрд┐рди рдмрд╛рдХреА рд╕рднреА рдХреЗ рд▓рд┐рдП рдмреЗрдХрд╛рд░ рд╣реИред рдФрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЕрднреА рднреА рдХреЛрдИ рд╕рджрд╕реНрдп рдЕрд╕реНрддрд┐рддреНрд╡ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рд╣реИ, рдФрд░ рдХрдбрд╝рд╛рдИ рд╕реЗ рд▓рд╛рдн рдЕрднреА рднреА рдЪрд┐рдВрддрд╛рдЬрдирдХ рдФрд░ рдкрд░реЗрд╢рд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдХрдо рд╕реЗ рдХрдо рдЖрдкрдХреЛ рдпрд╣ рдирд╣реАрдВ рднреБрдЧрддрдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ 'рд╕рдлрд╝рдореЛрдб' рдореЗрдВ 'рдиреЙрд░реНрдордореЛрдб' рдкрд▓рд╛рдпрди рд╣реИрдЪ рд╣реИ рдЕрднреА"ред Ickред

рдпрджрд┐ рдореИрдВрдиреЗ рд╕рдЦреНрдд рдХреЛрдб рд▓рд┐рдЦрд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреЗ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдо рдореЗрдВ рд╕реЗ рдПрдХ рдиреЗ рдЧрд▓рддреА рдХреАред

рд╣рд╛рд▓рд╛рдБрдХрд┐ рдореИрдВ рдпрд╣ рдирд╣реАрдВ рджреЗрдЦрддрд╛ рдХрд┐ рдЖрдк рдпрд╣ рдХреНрдпреЛрдВ рд╕реЛрдЪрддреЗ рд╣реИрдВ рдХрд┐ рд╕рджрд╕реНрдп рд▓реБрдХрдЕрдк рдкрд░ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЕрд╢рдХреНрддрддрд╛ рдПрдХ рдмреБрд░реА рдмрд╛рдд рд╣реЛрдЧреА, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рджрд╕реНрдп рд▓реБрдХрдЕрдк рдЕрдЧрд░ (рдкрд░рд┐рдгрд╛рдо рд╢реВрдиреНрдп рд╣реИ) рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдорд╣рдВрдЧрд╛ рд╣реИ

рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рдмреБрд░рд╛ рд╣реЛрдЧрд╛, рдкреАрдПрд╕ рдЧреИрд░-рд╕рдЦреНрддреА рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣реИ, рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд ?. рд▓рд┐рдП рдПрдХ рд╡рд╛рдВрдЫрдиреАрдп рд╡рд┐рдХрд▓реНрдк рд╣реЛрдЧрд╛ - рдмрд╣реБрдд рдЕрд▓рдЧ, рдЕрдзрд┐рдХ рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧреАред

рд▓реЗрдХрд┐рди рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ PS рдореЗрдВ рдЖрдк рдХреБрдЫ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ C # рдирд╣реАрдВ:

(1..3)[1kb..100kb]

рдФрд░ рдЧреИрд░-рдХрдбрд╝рд╛рдИ рдореЗрдВ рдХреЛрдИ рдЕрдкрд╡рд╛рдж рдирд╣реАрдВред рд╕рдВрдЦреНрдпрд╛рдПрдВ рдмрджрд▓реЗрдВ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдЗрд╕рдореЗрдВ рдХрд┐рддрдирд╛ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИ; рдкреНрд░рджрд░реНрд╢рди рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдордирдорд╛рдирд╛ рд╡рд╕реНрддреБрдУрдВ рдореЗрдВ рдЕрдиреБрдХреНрд░рдорд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрджреЗ рдХреЗ рдкреАрдЫреЗ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣рдорд╛рд░реА рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП ~ 100,000 рдЕрдкрд╡рд╛рдж рдЙрдард╛рдП рдФрд░ рдЦрд╛рдореЛрд╢ рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рд╣реИрдВред PS рд╣рдореЗрд╢рд╛ "рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдирд╛ рддреЗрдЬрд╝ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдкрд╕рдВрдж рдкрд░ рдЕрд╕реБрд╡рд┐рдзрд╛ рдХреЛ рдзрдХреНрдХрд╛ рджреЗ", рдФрд░ рдореБрдЭреЗ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрд╕рдВрдж рд╣реИред

@HumanEquivalentUnit рд╣рд░ рднрд╛рд╖рд╛ рдореЗрдВ рдХрдИ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВ рдЬрд┐рдирдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрдк рдЕрдкрдиреЗ рдХрд░рд┐рдпрд░ рдореЗрдВ рдХрднреА рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдпрджрд┐ рдЖрдкрдХреЛ рд╢реИрд▓реА рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИ, рддреЛ рдпрд╣ рдареАрдХ рд╣реИ, рдЖрдкрдХреЛ рдЙрди рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдореИрдВ рдпрд╣ рдирд╣реАрдВ рджреЗрдЦрддрд╛ рдХрд┐ рдЖрдк рд╕рдЦреНрдд рдореЛрдб рдХреНрдпреЛрдВ рд▓рд┐рдЦ рд░рд╣реЗ рд╣реИрдВ; рдпрд╣ рд▓рд┐рдкрд┐рдпреЛрдВ рдореЗрдВ рдПрдХ рдЕрдЪреНрдЫрд╛ рдЕрднреНрдпрд╛рд╕ рд╣реИ рдЗрд╕рд▓рд┐рдП рдЖрдк рд╣реЛрд╢рдкреВрд░реНрд╡рдХ рд╕рдорд╕реНрдпрд╛рдУрдВ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреА рдмрдЬрд╛рдп рднрд╛рд╖рд╛ рдХреЛ рдирд┐рдЧрд▓рдиреЗ рджреЗрдВ (рдФрд░ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рд╣рд░ рдЬрдЧрд╣ рдЦрд╛рд▓реА рдХреИрдЪ рдмреНрд▓реЙрдХ рд╣реЛрдиреЗ рдХрд╛ рдорддрд▓рдм рд╣реИ)ред рдлрд┐рд░ рд╕реЗ, рдЖрдк рдЕрднреА рднреА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рд╛рдЧрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ (рдЬреИрд╕реЗ рдореИрдВрдиреЗ рдХрднреА Out-Default рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ)ред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдСрдкрд░реЗрдЯрд░ ? , ?. ; рдпрд╣ рдЗрдВрдбреЗрдХреНрд╕ рдПрдХреНрд╕реЗрд╕ рдХреЗ рд╕рд╛рде рднреА рдХрд╛рдо рдХрд░реЗрдЧрд╛ред

рдЖрдЧреЗ рдХреА рдЪрд░реНрдЪрд╛ рдХреЗ рд▓рд┐рдП рдЬрдореАрдиреА рдХрд╛рд░реНрдп рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдмрддрд╛рдПрдВ рдХрд┐ рдореМрдЬреВрджрд╛ рд╕рдЦреНрдд рдореЛрдб рдЕрд╢рдХреНрдд-рдореВрд▓реНрдп-рд╕рд╢рд░реНрдд рдФрд░ рд╕рджрд╕реНрдп-рдЕрд╕реНрддрд┐рддреНрд╡-рд╕рд╢рд░реНрдд рдкрд╣реБрдВрдЪ ( рдКрдкрд░ рджреА рдЧрдИ рд╢рд░реНрддреЛрдВ) рдХреЛ рдХреИрд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддреЗ рд╣реИрдВ:

рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдХреЙрд▓рдо Set-StrictMode рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдХреЙрд▓рдо рдорд╛рди рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реИрдВ:

  • ЁЯСН ... рдЕрдиреБрдорддрд┐ рджреА
  • ЁЯЪл ... рдирд┐рд╖рд┐рджреНрдз (рдХрдерди-рд╕рдорд╛рдкреНрддрд┐ рддреНрд░реБрдЯрд┐ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИ)

рдПрдХ рддрд░рдл: рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рддреНрд░реБрдЯрд┐рдпрд╛рдБ рдХреЗрд╡рд▓ _statement-_ рд╣реИрдВ, _script_-terminating рдирд╣реАрдВ, PowerShell рдХреА рддреНрд░реБрдЯрд┐ рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдмрдбрд╝реА рдЪрд░реНрдЪрд╛ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВ - https://github.com/PowerShell/PowerShell/Docs/issues/1583 рджреЗрдЦреЗрдВред

  • _Null-value_-рд╕рд╢рд░реНрдд рдкрд╣реБрдВрдЪ - $obj _itself_ $null :

рдирд┐рд░реНрдорд╛рдг | -рдСрдл | -рд╡рд┐рд░реЛрдз 1 | -рд╡рд┐рд░реЛрдз 2 | -рд╡рд┐рд╕реНрддреГрдд 3+
---------- | ---- | ---------- | ---------- | ------------
$ obj | ЁЯСН | ЁЯЪл | ЁЯЪл | ЁЯЪл
$ obj.Prop | ЁЯСН | ЁЯСН | ЁЯЪл | ЁЯЪл
$ obj [42] | ЁЯЪл | ЁЯЪл | ЁЯЪл | ЁЯЪл
$ obj.Method () | ЁЯЪл | ЁЯЪл | ЁЯЪл | ЁЯЪл

рдпрд╣ рдЙрддреНрд╕реБрдХ рд╣реИ рдХрд┐ -Off рдФрд░ -Version 1 , $obj.Prop рдХреА рдЕрдиреБрдорддрд┐ рд╣реИ, рдЬрдмрдХрд┐ $obj[42] рдирд╣реАрдВ рд╣реИред

  • _Member-рдЕрд╕реНрддрд┐рддреНрд╡_-рд╕рд╢рд░реНрдд рдкрд╣реБрдВрдЪ - $obj рдЧреИрд░- $null , рд▓реЗрдХрд┐рди рдЬрд┐рд╕ рд╕рджрд╕реНрдп / рддрддреНрд╡ рдХреЛ рдПрдХреНрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рд╡рд╣ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ:

рдирд┐рд░реНрдорд╛рдг | -рдСрдл | -рд╡рд┐рд░реЛрдз 1 | -рд╡рд┐рд░реЛрдз 2 | -рд╡рд┐рд╕реНрддреГрдд 3+
---------- | ---- | ---------- | ---------- | ------------
$ obj.Prop | ЁЯСН | ЁЯСН | ЁЯЪл | ЁЯЪл
$ obj [42] (рдЗрдВрдбреЗрдХреНрд╕реЗрдмрд▓) | ЁЯСН | ЁЯСН | ЁЯСН | ЁЯЪл
$ obj [42] (рдЧреИрд░-рдЕрдиреБрдХреНрд░рдорд┐рдд) | ЁЯСН | ЁЯСН | ЁЯЪл | ЁЯЪл
$ obj.Method () | ЁЯЪл | ЁЯЪл | ЁЯЪл | ЁЯЪл

рдпрд╣ рдЙрддреНрд╕реБрдХ рд╣реИ рдХрд┐ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рдЕрдиреБрдХреНрд░рдорд┐рдд рд╡рд╕реНрддреБрдПрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рд░рдгрд┐рдпрд╛рдВ) -Version 2 рд╕рд╛рде рднреА рдХрд┐рд╕реА рди рдХрд┐рд╕реА рддрддреНрд╡ рддрдХ рдкрд╣реБрдВрдЪ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИрдВ, рдЬрдмрдХрд┐ рд╕реНрдХреЗрд▓рд░ - рдЬрд╣рд╛рдВ рдкрд╛рд╡рд░рд╢реЗрд▓ рд╕рдВрдЧреНрд░рд╣ рдХреЗ рд╕рд╛рде рдПрдХреАрдХреГрдд рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреНрд░рдордг рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ - рдирд╣реАрдВред

рдЕрд╢рдХреНрдд-рднрд┐рдЧреЛрдиреЗ ( рдЕрд╢рдХреНрдд-рд╕рд╢рд░реНрдд рдпрд╛ рд╕реА # рдореЗрдВ рдПрд▓реНрд╡рд┐рд╕ ) рдСрдкрд░реЗрдЯрд░ рд▓рдЧрднрдЧ рдЕрдирд┐рд╡рд╛рд░реНрдп рд╣реИ рдЬрдм StrictMode рдирд╡реАрдирддрдо рдореЗрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реИ рдФрд░ рдПрдХ рд╕рдВрдкрддреНрддрд┐ рд╣реИ рдХрд┐ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдкрд░ рдкрд╣реБрдБрдЪрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдпрд╛ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рдореМрдЬреВрдж рд╣реИрдВред рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЖрдкрдХреЛ рдЗрд╕ рддрд░рд╣ рдмреЗрд╡рдХреВрдлрд╛рдирд╛ рдЪрд╛рд▓ рдХрд╛ рд╕рд╣рд╛рд░рд╛ рд▓реЗрдирд╛ рд╣реЛрдЧрд╛:

function Get-OptionalPropertyValue($object, [string] $propertyName) {
    if (-not ([bool] (Get-Member -InputObject $object -MemberType Properties -Name $propertyName))) {
        return $null
    }

    $object.$propertyName
}

$value = Get-OptionalPropertyValue $foo "bar" # if $foo.bar exists, $value will contain its data; else $value will be $null

рдЬрдм рдЖрдк _really_ рдмрд╕ рд▓рд┐рдЦрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:

$value = $foo?.bar # if $foo.bar exists, $value will contain its data; else $value will be $null

рдХреГрдкрдпрд╛ рд▓реЛрдЧ, рдпрджрд┐ рдЖрдк рдЗрд╕ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдФрд░ рдХреЗрд╡рд▓ рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдЕрд╢рдХреНрдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕рд╕реЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд▓реЛрдЧреЛрдВ рдХреЛ рдЗрддрдирд╛ рджрд░реНрдж рд╣реЛрдЧрд╛ред

рдореИрдВ рдЗрд╕ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рд░рдЦрдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ рдФрд░ рдХреБрдЫ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдкрд╛рдпрд╛ред

рдЖрдУ рд╣рдо ?? рдФрд░ ?=

$x ?= 1 рдФрд░ $x ?? 1 рд╕реАрдзреЗ рд▓рдЧрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди, рдЬрдм рд╕реЗ рд╡реЗ рдСрдкрд░реЗрдЯрд░ рд╣реИрдВ рд╣рдореЗрдВ $x?=1 рдФрд░ $x??1 рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдЙрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рд╛рде $x? рдФрд░ $x?? рджреЛрдиреЛрдВ PowerShell рдореЗрдВ рд╡реИрд░рд┐рдПрдмрд▓ рдирд╛рдореЛрдВ рдХреЛ рдорд╛рдиреНрдп рдХрд░рддреЗ рд╣реИрдВред рдкреНрд░рддрд┐рдЬреНрдЮрд╛ рдХрд░рдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ ${x}?=1 рдФрд░ ${x}??1 ред

рдФрд░ рд╕рд╢рд░реНрдд рд╕рджрд╕реНрдп рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ ?. рдФрд░ ?[] рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рд╣рдореЗрдВ ${x}?.name рдФрд░ ${x}?[0] ред
рдЗрдирдХреЗ рд▓рд┐рдП, $x ?.name рдФрд░ $x ?[0] рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рджреВрд╕рд░рд╛ рд╡рд┐рдХрд▓реНрдк рдПрдХ рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ ? рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рд╣реИред

рддреБрдо рдХреНрдпрд╛ рд╕реЛрдЪрддреЗ рд╣реЛ? @ mklement0

/ cc @rjmholt @ daxian-dbw @JamesWTruher

рдореИрдВрдиреЗ рдХрднреА рднреА рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ _leded_ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рди рд╣реА рдпрд╣ рд╕рдордЭрд╛ рд╣реИ рдХрд┐ ? рдПрдХ рд╡реИрдз рдЪрд░ рдирд╛рдо рдХреНрдпреЛрдВ рд╣реИред рдпрд╣ $Safe? рдЬреИрд╕реЗ рдирд╛рдореЛрдВ рдХреЗ рд▓рд┐рдП рджрд░рд╡рд╛рдЬрд╛ рдЦреЛрд▓рддрд╛ рд╣реИ рдЬреЛ рдЖрдо рддреМрд░ рдкрд░ $IsSafe рд░реВрдк рдореЗрдВ рд▓рд┐рдЦреЗ рдЬрд╛рдиреЗ рдкрд░ рдЖрдорддреМрд░ рдкрд░ рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯ рдФрд░ рдХрдо рдЕрдЬреАрдм рд╣реЛрддреЗ рд╣реИрдВред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдмрджрд▓рд╛рд╡ рдХреЛ рдЖрдиреЗ рдореЗрдВ рдХрд╛рдлреА рд╕рдордп рд▓рдЧ рдЧрдпрд╛ рд╣реИред

рдпрд╣ $ рд╕реЗрдл рдЬреИрд╕реЗ рдирд╛рдореЛрдВ рдХреЗ рд▓рд┐рдП рджрд░рд╡рд╛рдЬрд╛ рдЦреЛрд▓рддрд╛ рд╣реИ? рдЬреЛ рдЖрдорддреМрд░ рдкрд░ рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯ рдФрд░ рдХрдо рдЕрдЬреАрдм рд╣реИ рдЬрдм $ IsSafe рдХреЗ рд░реВрдк рдореЗрдВ рд╡реИрд╕реЗ рднреА рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ

рджрд┐рд▓рдЪрд╕реНрдк рд░реВрдк рд╕реЗ рдореИрдВрдиреЗ рд╡рд┐рдкрд░реАрдд рднрд╛рд╡рдирд╛ рд╡реНрдпрдХреНрдд рдХреАред рдпрд╣ рдПрдХ рдХреНрд▓рд╛рд╕рд┐рдХ рдпреЛрдЬрдирд╛ / рд░реВрдмреА рдкрд░рдВрдкрд░рд╛ рд╣реИред

if ($questionMark?)
{
    Write-Host "That's silly!"
}

рдХреНрдпрд╛ рдЯрд░реНрдирд░реА рдСрдкрд░реЗрдЯрд░ рдХреЗ рдкрд╛рд╕ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рдереА, рдЬрд╣рд╛рдВ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдХреЗ рд▓рд┐рдП рдСрдкрд░реЗрдЯрд░ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рдереА рдпрд╛ рдЪрд░ рдирд╛рдо рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдШреБрдВрдШрд░рд╛рд▓реЗ рдмреНрд░реЗрд╕рд┐рдЬрд╝ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рдереА рддрд╛рдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП ? рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдЪрд░ рдХреЗ рд╕рд╛рде рдареАрдХ рд╕реЗ рдХрд╛рдо рдХрд░ рд╕рдХреЗрдВ?

рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЗрди рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЛ рдкреЗрд╢ рдХрд┐рдП рдЬрд╛рдиреЗ рдХреЗ рд╕рд╛рде, PowerShell рд╕рд┐рдВрдЯреИрдХреНрд╕ рдореЗрдВ рдСрдкрд░реЗрдЯрд░ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ ? рдХреЛ рдкрд╣рдЪрд╛рдирдиреЗ рдХреЛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджреЗрдЧрд╛ рдЬреИрд╕реЗ $x?[0] , рдРрд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЬреЛ ? рдореЗрдВ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдЪрд░ рдирд╛рдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ ? рдХреЛ рдЗрд╕ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ (рдЪреВрдВрдХрд┐ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЕрдорд╛рдиреНрдп рд╣реЛрдЧрд╛): ${x?}?[0] ред $x?.Name рдФрд░ ${x?}?.Name ред

рджреВрд╕рд░рд╛ рд╡рд┐рдХрд▓реНрдк рдпрд╣ рд╣реИ рдХрд┐ рдмреНрд░реЗрдХрд┐рдВрдЧ рдЪреЗрдВрдЬ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдП рдФрд░ рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреА рдЬрд╛рдП? рдЪрд░ рдирд╛рдо рдореЗрдВ рдмрд┐рд▓реНрдХреБрд▓ред

A рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдпрд╣ рдПрдХ рдкреНрд░рдореБрдЦ рд╕рдВрд╕реНрдХрд░рдг рдкрд░рд┐рд╡рд░реНрддрди (6 рд╕реЗ 7) рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд▓рд╛рдпрдХ рд╣реИред рдХрд╛рд╢ GitHub рдХреЗ рдкрд╛рд╕ рдмреЗрд╣рддрд░ рдХреЛрдб рдЦреЛрдЬ рд╣реЛрддреА, рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдкреАрдПрд╕ рдЪрд░ рдХреЗ рдХрд┐рддрдиреЗ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ рдЬреЛ ? рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрддреЗ рд╣реИрдВред рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдЗрддрдирд╛ рдкреНрд░рднрд╛рд╡рд╢рд╛рд▓реА рдирд╣реАрдВ рд╣реЛрдЧрд╛ рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдЗрд╕реЗ GitHub рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПред PowerShell рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ 14 рд╡рд░реНрд╖реЛрдВ рдореЗрдВ, рдореИрдВрдиреЗ рдХрднреА рднреА рдПрдХ рдЪрд░ рдирд╛рдо рдореЗрдВ ? рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╢рд╛рдпрдж рдпрд╣ рд╕рд┐рд░реНрдл рдореЗрд░реЗ рд▓рд┐рдП рд╣реИред :-)

рдпрд╣ рдЬрд╣рд╛рдЬ рдмрд╣реБрдд рдкрд╣рд▓реЗ рд╣реА рд░рд╡рд╛рдирд╛ рд╣реЛ рдЪреБрдХрд╛ рд╣реИ, рдФрд░ рдЖрдЬ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ ? рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдЪрд░ рдХреЛ рджреЗрдЦрдХрд░ рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ рдЕрдЧрд░ рд╣рдо рдмрд╕ рдПрдХ рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдирд╛рдо рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдСрдкрд░реЗрдЯрд░ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ ? рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХреЛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджреЗрддреЗ рд╣реИрдВ, рддреЛ рдЗрди рдирдП рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреА рдмрд╛рдд рдЖрддреА рд╣реИ, рдЬреЛ рд▓реЛрдЧ ? рдореЗрдВ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдЪрд░ рдирд╛рдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдЗрди рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЗ рд╕рд╛рде рдЙрди рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП {} рдпрд╛ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди (рдЬрд╣рд╛рдВ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдХреА рдЕрдиреБрдорддрд┐ рд╣реИ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

рдЗрд╕ рд╕рдВрджрд░реНрдн рдореЗрдВ "рд╡рд╣ рдЬрд╣рд╛рдЬ рд░рд╡рд╛рдирд╛ рд╣реЛ рдЧрдпрд╛" рд╡рд╛рдХреНрдпрд╛рдВрд╢ рд╕реБрдирдирд╛ рдЕрдЬреАрдм рд╣реИред рдпрд╣ рдПрдХ _рдореЗрдЬрд░ рд╕рдВрд╕реНрдХрд░рдг_ рдкрд░рд┐рд╡рд░реНрддрди рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдпрд╣рд╛рдБ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдЪрд┐рдд рдирд╣реАрдВ рд╣реИред

@rkeithhill рдореИрдВрдиреЗ рдЗрд╕реЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╕рд╛рдорд╛рди рдореЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕реЛрдЪрд╛ рдХрд┐ рдпрд╣ рд╕рд╣рдпреЛрдЧреА рдХрд╛рдо рдХреЗ рд▓рд┐рдП рдЕрд╕реНрдкрд╖реНрдЯ рд╣реЛрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдРрд╕реА рд╕рд╣рдЬ рдЬреНрдЮрд╛рди рдпреБрдХреНрдд рдЪреАрдЬрд╝ рд╣реИ рдЬреЛ рдЪрд░ рдирд╛рдореЛрдВ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рддреАрдХ рдХреЗ рд╕рдорд╛рди рд╣реИ (рдЪрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрдореЛрдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд╕рдорд╛рди)

@KirkMunro "рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╡рд╛рд▓реЗ рдкрд╛рд░реНрд╕рд┐рдВрдЧ" рдХреАрдбрд╝реЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЦреБрд▓реЗ рджрд░рд╡рд╛рдЬреЗ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИред

@ vexx32 : рдмреНрд░реЗрдХрд┐рдВрдЧ рдЪреЗрдВрдЬ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЕрдиреБрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рдкреНрд░рдореБрдЦ рд╕рдВрд╕реНрдХрд░рдг рдкрд░рд┐рд╡рд░реНрддрди рд╣реИ; рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЗрд╕ рддрд░рд╣ рдХреЗ рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд▓рд┐рдП рдмрд╛рд░ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рдЙрд╕ рдмрд╛рд░ рдХреЛ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рдХрд░реАрдм рдЖрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ ? рдореЗрдВ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрдм рддрдХ рд╡реЗ {} рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдЪрд░ рдирд╛рдо рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдирд╛рдо рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ ? рдореЗрдВ рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдпрджрд┐ рдЖрдк рдЙрджреНрдзрд░рдгреЛрдВ рдореЗрдВ рдирд╛рдо рд▓рдкреЗрдЯреЗ рдмрд┐рдирд╛ PowerShell рдореЗрдВ рдРрд╕реА рд╕рдВрдкрддреНрддрд┐ рджреЗрдЦрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдПрдХ рдкрд╛рд░реНрд╕рд░ рддреНрд░реБрдЯрд┐ рдорд┐рд▓реЗрдЧреАред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

PS C:\> $o = [pscustomobject]@{
    'DoesItBlend?' = $true
}
PS C:\> $o.DoesItBlend?
At line:1 char:15
+ $o.DoesItBlend?
+               ~
Unexpected token '?' in expression or statement.
+ CategoryInfo          : ParserError: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : UnexpectedToken

PS C:\> $o.'DoesItBlend?'
True

рдореБрдЭреЗ рдереЛрдбрд╝реА рд╣реИрд░рд╛рдиреА рд╣реБрдИ рдХрд┐ рдЖрдЬ рдкрд╛рд░реНрд╕ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ (рд╡рд╣ рдкрд░рд╕реЗрдЬрд╝ рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реИ?), рд▓реЗрдХрд┐рди рдЗрд╕ рддрд░рд╣ рдХреЗ рдЧреБрдгреЛрдВ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЙрди рдирд╛рдореЛрдВ рдХреЛ рдЙрджреНрдзрд░рдгреЛрдВ рдореЗрдВ рд╕рдВрд▓рдЧреНрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЖрдк рдПрдХ рдЯрд░реНрдирд░реА, рдЕрд╢рдХреНрдд рдХреЗ рд╕рд╛рде рдЙрджреНрдзрд░рдг рдХрд╛ рдкрд╛рд▓рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред -рдХреЙрд▓реЗрдЬрд┐рдВрдЧ, рдЖрджрд┐ рд╕реНрдерд╛рдиреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдСрдкрд░реЗрдЯрд░ рдФрд░ рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рдореБрдЭреЗ рдпрд╣ рд╕рд┐рдВрдЯреИрдХреНрд╕ ${x?}?.name , рдФрд░ рдореИрдВ рдЗрд╕ рд░реБрдЦ рдХреЗ рд╕рд╛рде рдареАрдХ рд╣реВрдВ рдХрд┐ рдпрджрд┐ рдЖрдк рдЪрд╛рд╣реЗрдВ рддреЛ рдЗрд╕ рддрд░рд╣ рдХреЗ рд╡реИрд░рд┐рдПрдмрд▓ / рдкреНрд░реЙрдкрд░реНрдЯреА рдХреЗ рдирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдРрд╕реЗ рдирд╛рдореЛрдВ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рд┐рдВрдЯреИрдХреНрд╕ рдпрд╛ рд░рд┐рдХреНрддрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ рдЬреЛ рдЯрд░реНрдирд░реА рдпрд╛ рдирд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред - * рдСрдкрд░реЗрдЯрд░реЛрдВред

@KirkMunro рдХреБрдЫ рднреА рдирд╣реАрдВ рд▓реЛрдЧреЛрдВ рдХреЛ рдЪрд░-рд╕реАрдорд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрддрд╛ рд╣реИ рдЕрдЧрд░ рд╡реЗ рдЧреВрдврд╝ рдЪрд░ рдирд╛рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдореИрдВ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рд╕реЗ рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЙрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рд╡рд░реНрддрдорд╛рди рдЙрдкрдпреЛрдЧ рдХреНрдпрд╛ рд╣реИред

рдкрд╛рд╡рд░рд╢реЗрд▓ 7 рдкрд░ рд▓реЛрдЧ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрддреНрд╕рд╛рд╣реА рд╣реИрдВ рдФрд░ рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддреЗ рд╣реЛрдВрдЧреЗред рдЬреЛ рд▓реЛрдЧ рдирд╣реАрдВ рд╣реИрдВ, рд╡реЗ рдЕрднреА рднреА <= v5.1 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЬрд╛рд░реА рд░рд╣реЗрдВрдЧреЗ; рдЬрдм рддрдХ msft рдЗрд╕реЗ рд╡рд┐рдВрдбреЛрдЬ 10 (рдХрднреА рдирд╣реАрдВ) рд╕реЗ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИред

@KirkMunro рдЬрд╝рд░реВрд░, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдорд╛рдирдХ рдЕрдиреБрдореЗрдп рдЪрд░ рд╡рд░реНрдгреЛрдВ рд╕реЗ рд╣рдЯрд╛рдиреЗ рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╡реИрд╕реЗ рднреА рдЪрд░ рдирд╛рдо рдХреЗ рд░реВрдк рдореЗрдВ ${Valid?} рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛ред рдЪреВрдБрдХрд┐ рдЙрдиреНрд╣реЗрдВ рдЗрди рд╕рдВрдЪрд╛рд▓рдХреЛрдВ рдХреЗ рд╕рд╛рде рдРрд╕рд╛ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛ рдХрд┐ рдЗрд╕рдХреЗ рдЕрдиреБрд░реВрдк рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдмрдЬрд╛рдп рдЗрд╕рдХреЗ рдХрд┐ ? рдПрдХ рдРрд╕рд╛ рдкрд╛рддреНрд░ рдмрди рдЬрд╛рдП, рдЬреЛ рдХрднреА-рдХрднреА рдПрдХ рдЪрд░ рдирд╛рдо рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред

рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА _is_ рдПрдХ рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрдо рд╕реЗ рдХрдо рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реБрд╕рдВрдЧрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдХрд┐рд╕реА рдЕрдиреНрдп рд╕реНрддрд░ рдХреА рдЕрд╕реНрдкрд╖реНрдЯрддрд╛ рдХрд╛ рдкрд░рд┐рдЪрдп рджреЗрдиреЗ рдХреЗ рдмрдЬрд╛рдп рд╕рднреА рддрд░рд╣ рд╕реЗ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред ЁЯЩВ

@adityapatwardhan рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рднрд╛рд╖рд╛ рдХреЗ рд▓рд┐рдП ? рдХреЛ рдПрдХ рд╡реИрдз рдЪрд░ рдЪрд░рд┐рддреНрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рдХрд╛рд▓рдирд╛ рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛ред рдпрд╣ рдЖрд╕рд╛рдиреА рд╕реЗ рдПрдХ рдкрд░рд┐рдЪрд┐рдд рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдореЗрдВ рдирд▓-рд╕реЛрдЦ / -рдХрд▓реЗрд░рд╛рд╕ рдФрд░ рдЯрд░реНрдирд░реА рдСрдкрд░реЗрдЯрд░реЛрдВ рджреЛрдиреЛрдВ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░реЗрдЧрд╛ рдЬреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рдВрд▓реЗрдЦрди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдПрд░реНрдЧреЛрдиреЙрдорд┐рдХреНрд╕ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред

@KirkMunro "рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╡рд╛рд▓реЗ рдкрд╛рд░реНрд╕рд┐рдВрдЧ" рдХреАрдбрд╝реЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЦреБрд▓реЗ рджрд░рд╡рд╛рдЬреЗ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИред

@ Thecorrigible1 : рдХреЛрдИ рднреА рдХреЛрдб рдмрдЧ рдХреЗ рд▓рд┐рдП рджрд░рд╡рд╛рдЬрд╛ рдЦреЛрд▓ рд╕рдХрддрд╛ рд╣реИ рдЕрдЧрд░ рдЗрд╕реЗ рдареАрдХ рд╕реЗ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдореИрдВ рд╕рд┐рд░реНрдл рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдПрдХрд▓-рд╡рд░реНрдг рд▓реБрдХрд╣реИрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЕрдЧрд░ рдпрд╣ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдкреЙрд╡рд░рд╢реЗрд▓ рдЯрд░реНрдирд░реА рдпрд╛ рдирд▓- * рдСрдкрд░реЗрдЯрд░ рдореЗрдВ рдЪрд▓рддрд╛ рд╣реИ, рдЬрдм рдпрд╣ рдПрдХ рдЪрд░ рдирд╛рдо рдХреЛ рдкрд╛рд░ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдХрд┐ рдЪрд░ рд╕реАрдорд╛ рдореЗрдВ рд╕рдВрд▓рдЧреНрди рдирд╣реАрдВ рд╣реИ рдФрд░ рдПрдХ ? рд╡рд░реНрдг рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рдХреЛрдб рдкрд░рд┐рд╡рд░реНрддрди рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдмрдЧ рдХреЗ рд▓рд┐рдП рджрд░рд╡рд╛рдЬрд╛ рдирд╣реАрдВ рдЦреЛрд▓рддрд╛ рд╣реИред

рдкрд╛рд╡рд░рд╢реЗрд▓ 7 рдкрд░ рд▓реЛрдЧ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрддреНрд╕рд╛рд╣реА рд╣реИрдВ рдФрд░ рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддреЗ рд╣реЛрдВрдЧреЗред рдЬреЛ рд▓реЛрдЧ рдирд╣реАрдВ рд╣реИрдВ, рд╡реЗ рдЕрднреА рднреА <= v5.1 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЬрд╛рд░реА рд░рд╣реЗрдВрдЧреЗ; рдЬрдм рддрдХ msft рдЗрд╕реЗ рд╡рд┐рдВрдбреЛрдЬ 10 (рдХрднреА рдирд╣реАрдВ) рд╕реЗ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИред

@ TheInrigrigible1 : рдЖрдкрдХреЗ рдкрд╛рд╕ рдЙрд╕ рдХрдерди рдХрд╛ рдХреНрдпрд╛ рдЖрдзрд╛рд░ / рд╕рдмреВрдд рд╣реИ? PowerShell 7 рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рдореЗрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдЬ рдпрд╣ рдХреЗрд╡рд▓ рдЙрддреНрд╕рд╛рд╣реА рд▓реЛрдЧреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡рд╣ рджреЗ рджрд┐рдпрд╛ рдЧрдпрд╛ред рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рд╕реЗ рдкрд░реЗ, рдпрджрд┐ PowerShell 7 рдпрд╛ рдмрд╛рдж рдореЗрдВ рд╕рдореНрдореЛрд╣рдХ рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдХрдВрдкрдирд┐рдпреЛрдВ рдХреЛ рдЪрд╛рд╣рд┐рдП, рдЬрдмрдХрд┐ рдЙрдиреНрд╣реЗрдВ рдЬрд┐рд╕ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЙрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реБрдП рд╡реЗ рдЙрди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдпрд╣ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕рдЪ рд╣реИ рдЕрдЧрд░ OS тАЛтАЛрдХреЗ рд╕рд╛рде PowerShell 7 рд╕реНрдерд╛рдкрд┐рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдХреЗрд╡рд▓ рдЗрд╕ рдмрд╛рдд рдкрд░ рдХрд┐ рдЙрддреНрд╕рд╛рд╣реА рд▓реЛрдЧ рдЦреЗрд▓ рдореЗрдВ рдЖрддреЗ рд╣реИрдВ, рдЙрди рд╕рдВрдЧрдардиреЛрдВ рдореЗрдВ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдкреЙрд╡рд░рд╢реЗрд▓ 7 рдХреА рдореЗрдЬ рдкрд░ рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрдо рд╕реЗ рдХрдо рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реБрд╕рдВрдЧрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЕрд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рдПрдХ рдФрд░ рд╕реНрддрд░ рдХреЛ рдкреЗрд╢ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рд╕рднреА рддрд░рд╣ рд╕реЗ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред ЁЯЩВ

@ vexx32 рдЗрд╕реЗ ?? рдереЗ, рддреЛ рдпрд╣ рдПрдХ рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдЗрд╕рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдПрдХ рдЪрд░ рд╣реЛрдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рджреВрд░рд╕реНрде рд╣реИ рдЬрд┐рд╕рдХрд╛ рдирд╛рдо рдПрдХ рдПрдХрд▓ ? рдореЗрдВ рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, null- * рдСрдкрд░реЗрдЯрд░реНрд╕ рдХрд╛ рдкрд░рд┐рдЪрдп рдЖрдЬ рднреА ? рдХреЛ рдПрдХ рдорд╛рдирдХ рдЕрдиреБрдореЗрдп рдЪрд░ рдЪрд░рд┐рддреНрд░ рдмреНрд░реЗрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реБрдП рдХреИрд╕реЗ рд╣реЛрдЧрд╛?

рдореЗрд░реЗ рдЕрдиреБрднрд╡ рдореЗрдВ рдЧреБрдб-рдЯреВ-рд╣реЗрд╡реНрд╕ (рдЬреЛ рдРрд╕рд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ) рдХреЗ рд▓рд┐рдП рдмрджрд▓рд╛рд╡реЛрдВ рдХреЛ рдЦрд╛рд░рд┐рдЬ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЙрдирдХреЗ рдЖрд╕рдкрд╛рд╕ рдХреА рдЪрд░реНрдЪрд╛ / рддрд░реНрдХ рдХреЗрд╡рд▓ рдЪреАрдЬреЛрдВ рдХреЛ рдирд╛рдЯрдХреАрдп рд░реВрдк рд╕реЗ рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдзреАрдорд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп рдХрд░рддреЗ рд╣реИрдВ, рд╡рд╣ рдмрд┐рдВрджреБ рдЬрд╣рд╛рдБ рдЪреАрдЬреЗрдВ рдмрд╕ рд░реБрдХрддреА рд╣реИрдВ рдпрд╛ рдЫреВрдЯрдиреЗ рдореЗрдВ рдЪреВрдХ рдЬрд╛рддреА рд╣реИрдВ, рдЖрджрд┐ред рдзреАрдорд╛ рд╣реЛрдирд╛ рдЕрдХреНрд╕рд░ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрджрд┐ рдЖрдк рдПрдХ рдкрд░рд┐рд╡рд░реНрддрди рдкрд░рд┐рд╡рд░реНрддрди рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рджреЗ рд░рд╣реЗ рд╣реИрдВ рддреЛ рдкреНрд░рднрд╛рд╡ рдХрд╛ рдЖрдХрд▓рди рдХрд░рдиреЗ рдФрд░ рдЗрд╕ рддрд░рд╣ рдХреЗ рдмрджрд▓рд╛рд╡ рдХреЛ рд╕рд╣реА рдард╣рд░рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдЖрдЬ рдЙрд╕ рд╕рд╛рдХреНрд╖реНрдп рдХреЛ рдЬреБрдЯрд╛рдирд╛ рдХрдард┐рди рд╣реИред рдореИрдВ рдпрд╣ рд╕рд┐рд░реНрдл рдЗрд╕рд▓рд┐рдП рдХрд╣ рд░рд╣рд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдХрд┐рд╕реА рднреА рджрд┐рди рдПрдХ рдЕрдЪреНрдЫреЗ-рд╕реЗ-рддреЛрдбрд╝рддреЗ рд╣реБрдП рдмрджрд▓рд╛рд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣рд╕ рдХрд░рддреЗ рд╣реБрдП рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдкреНрд░рд╛рдкреНрдд рдХрд░реВрдБрдЧрд╛ред

рдореИрдВ рдЪрд░ рдирд╛рдореЛрдВ рдореЗрдВ рдХрднреА рднреА ? рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛, рди рд╣реА рдореИрдВ рдХреБрдЫ рд▓реЛрдЧреЛрдВ рд╕реЗ рдЙрдореНрдореАрдж рдХрд░рддрд╛ рд╣реВрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкрдврд╝ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ PowerShell 7 рдХреЗ рд▓рд┐рдП рдкреНрд░рд╡реЗрд╢ рдХреЗ рд▓рд┐рдП рдЕрдирд╛рд╡рд╢реНрдпрдХ рдмрд╛рдзрд╛рдУрдВ рдХреЛ рд▓рдЧрд╛рддрд╛ рд╣реИ, рдмрд╕ рдЧреЛрдж рд▓реЗрдиреЗ рдХреЛ рдзреАрдорд╛ рдХрд░ рджреЗрддрд╛ рд╣реИ, рдЦрд╛рд╕рдХрд░ рдЬрдм PowerShell рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрдИ рд▓реЛрдЧ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдирд╣реАрдВ рд╣реИрдВ рдЬреЛ рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдЕрдзрд┐рдХ рдЖрджреА рд╣реИрдВред

рд╡реИрд╕реЗ рднреА, рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдзреАрдорд╛ рдХрд░рдиреЗ рдХрд╛ рдореЗрд░рд╛ рдЗрд░рд╛рджрд╛ рдирд╣реАрдВ рд╣реИ - рдмрд▓реНрдХрд┐ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрддред рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЕрдкрдиреЗ рд╡рд┐рдЪрд╛рд░реЛрдВ рдФрд░ рдЕрдиреБрднрд╡ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд┐рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЖрдЧреЗ рдЗрд╕ рдкрд░ рдХреЛрдИ рдЯрд┐рдкреНрдкрдгреА рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ рдХрд┐ рд╣рдореЗрдВ рдпрд╣рд╛рдВ рдПрдХ рдмреНрд░реЗрдХрд┐рдВрдЧ рдмрджрд▓рд╛рд╡ рдХреЗ рд▓рд┐рдП рдзрдХреНрдХрд╛ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП рдпрд╛ рдирд╣реАрдВред

рдЗрд╕ рдЖрдХрд╕реНрдорд┐рдХ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:

$ValueIsValid? = @( $true, $false, $false, $true )

$ValueIsValid?[0]
# old behaviour? gets `$true`
# new behaviour? gets nothing, because the `?[0]` is interpreted as a null-conditional access.

рдпрд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рд╕рд╛рде _already_ рддреЛрдбрд╝ рджреЗрдЧрд╛ред рдореИрдВ рдПрдХ рднреНрд░рд╛рдордХ рд╡рд┐рд░рд╛рдо рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдПрдХ рд╕реБрд╕рдВрдЧрдд, рд╕реНрд╡рдЪреНрдЫ рд╡рд┐рд░рд╛рдо рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛, рдЬрд┐рд╕реЗ рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрдзреЗ-рдкреГрд╖реНрда рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдЬрдм ? рдЕрдЪрд╛рдирдХ рд╡реИрдз рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЬрд╣рд╛рдВ рдпрд╣ рдЕрднреА рднреА рд╣реИред

@KirkMunro рдпрджрд┐ PowerShell 7 рдпрд╛ рдмрд╛рдж рдореЗрдВ рд╕рдореНрдореЛрд╣рдХ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреА рдкреЗрд╢рдХрд╢ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдХрдВрдкрдирд┐рдпреЛрдВ рдХреЛ рдЪрд╛рд╣рд┐рдП, рдЬрдмрдХрд┐ рдЙрдиреНрд╣реЗрдВ рдЬрд┐рд╕ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЙрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реБрдП рд╡реЗ рдЕрдкрдиреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдпрд╣ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕рдЪ рд╣реИ рдЕрдЧрд░ OS тАЛтАЛрдХреЗ рд╕рд╛рде PowerShell 7 рд╕реНрдерд╛рдкрд┐рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

рдХреБрдЫ рдлреЙрд░реНрдЪреНрдпреВрди 50 рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рдХреБрдЫ рдХрд░реНрдордЪрд╛рд░реА рдард┐рдХрд╛рдиреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣рдЬрд╛рд░реЛрдВ рдореЗрдВ рдереА, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдУрдПрд╕ рдкрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реЗ рджреВрд░ рд╣реЛрдирд╛ рдПрдХ рдЪреБрдиреМрддреА рдереА (рдпрд╛рдиреА, v5.x рдкрд░ рдЬрд╛ рд░рд╣рд╛ рд╣реИ)ред рдореИрдВрдиреЗ рдЕрднреА рддрдХ рдХрд┐рд╕реА рднреА рд╕реНрдерд╛рди рдХреЛ рдХреЛрд░ рдХреЛ рдЕрдкрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рджреЗрдЦрд╛ рд╣реИ; рдмрд▓реНрдХрд┐ рд╡реЗ рдХреНрд░реЙрд╕-рдЕрдиреБрдХреВрд▓рддрд╛ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдкрд╛рдпрдерди рдореЗрдВ рдЪрд▓реЗ рдЬрд╛рдПрдВрдЧреЗред рд╡рд┐рдВрдбреЛрдЬ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдирд╛ рднреА рдПрдХ рдмрд╣реБрдд рд╣реА рдХрдо рдХрд╛рдо рдерд╛ред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрдВрдкрдирд┐рдпрд╛рдВ рдЕрдкрдиреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирдИ рддрдХрдиреАрдХ рдпрд╛ рднрд╛рд╖рд╛ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рдЕрдкрдиреЗ рдХрд░реНрдордЪрд╛рд░рд┐рдпреЛрдВ рдФрд░ рдЙрдирдХреЗ рдХрд░реНрдордЪрд╛рд░рд┐рдпреЛрдВ рдХреЗ рдЬреНрдЮрд╛рди рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХрд╛рдо рдХрд░рддреА рд╣реИрдВред рдХреБрдЫ рдкреВрд░реА рддрд░рд╣ рд╕реЗ v2 рдкрд░ рд░рд╣рдиреЗ рд╡рд╛рд▓реА рд╕рд╛рдордЧреНрд░реА рд╣реЛрдЧреА рдФрд░ рдХрднреА рднреА Win10 / Server16 cmdlets рдХреЛ рдЫреВрдирд╛ рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдЬреЛ рдЬреАрд╡рди рдХреЛ рдирд╛рдЯрдХреАрдп рд░реВрдк рд╕реЗ рдЖрд╕рд╛рди рдмрдирд╛рддреЗ рд╣реИрдВред

рдЗрд╕ рд╕рдмрдХреЗ рд╕рд╛рде рдореЗрд░рд╛ рдХрд╣рдирд╛ рдпрд╣ рд╣реИ рдХрд┐ рдпреЗ рд╕реБрд╡рд┐рдзрд╛рдПрдБ рд╢реВрдиреНрдп рдореЗрдВ рдирд╣реАрдВ рд╣реИрдВред рдпрджрд┐ рдЖрдк рдПрдХ рднрд╛рд╖рд╛ рдХреЛ рдЕрдзрд┐рдХ рдПрд░реНрдЧреЛрдиреЛрдорд┐рдХ рдмрдирд╛рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдЙрди рд▓реЛрдЧреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рдЧреЛрдж рд▓реЗрдиреЗ рдХреЛ рджреЗрдЦреЗрдЧрд╛ рдЬреЛ рдЙрдкрдХрд░рдг рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рд╡реЗ рддреЗрдЬреА рд╕реЗ рд╣реЛрдиреЗ рд╡рд╛рд▓реА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░ рд╕рдХреЗрдВред (рджреЗрдЦреЗрдВ: C # рдФрд░ рдЕрдзрд┐рдХ / рдмреЗрд╣рддрд░ рднрд╛рд╖рд╛ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд╕рд╛рде рд▓реЛрдХрдкреНрд░рд┐рдпрддрд╛ рдореЗрдВ рд╡реГрджреНрдзрд┐)

? рдореЗрдВ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдЪрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ - рдЬреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЪрд░ $ рдХреЗ рдХрд╛рд░рдг рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ

@lzybkr рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдЗрд╕рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдорд╛рдорд▓рд╛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓рд╛ рд╣реИ рдЬреИрд╕реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА $^ рдФрд░ $$ ред

@lzybkr @ Thecorrigible1 рдЬрд╣рд╛рдБ рддрдХ рдореБрдЭреЗ рдпрд╛рдж рд╣реИ, рдЙрди рдЪрд░ рдХрд╛ _all_ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ tokenizer рдореЗрдВ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЖрд╡рд░рдг рд╣реИред $^ _already_ рдПрдХ рдорд╛рдиреНрдп рдЪрд░ рдирд╛рдо рдирд╣реАрдВ рд╣реИред рдЯреЛрдХрдирд░ рдореЗрдВ рдЙрди рд╕рднреА рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЗ рд╣реИрдВ рдЬреЛ рдорд╛рдирдХ рдЪрд░ рдирд╛рдореЛрдВ рдХреА рддрд▓рд╛рд╢ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред

рдпрд╣рд╛рдБ рдПрдХрдорд╛рддреНрд░ рдЙрдкрд╛рдп ┬┐ :

рдореВрд░реНрдЦрддрд╛рдкреВрд░реНрдг $? ┬┐= 1

рдореИрдВ рд╕реНрдЯреАрд╡ рд╕реНрдЯреАрд╡, рдореИрдВ рджреГрдврд╝рддрд╛ рд╕реЗ рдЗрд╕ рдкрд░ рднреАрдбрд╝ рднреАрдбрд╝ рдореЗрдВ рд╣реВрдБред

$silly?тА╜=1

@lzybkr - рдореЗрд░реЗ рдЬреНрдЮрд╛рди рдореЗрдВ $? $$ рдФрд░ $^ рд╡рд┐рд╢реЗрд╖ рддрд░реАрдХреЗ рд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

https://github.com

рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдпреЗ рдЪрд╛рд░ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ

  • рдмрд┐рдЧ рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди - рдЪрд░ рдирд╛рдореЛрдВ рдореЗрдВ ? рдЕрдиреБрдорддрд┐ рди рджреЗрдВред
  • рдПрдХ рдСрдкрд░реЗрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ ?. рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджреЗрдВред рдЗрд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ ? рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдЪрд░ рдирд╛рдо ${variablename} рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдлрд┐рд░ рднреА рдПрдХ рдкрд░рд┐рд╡рд░реНрддрдиред
  • рдкреБрд░рд╛рдиреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджреЗрдВред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ ?. рдФрд░ ?[] , ${variablename}?.property рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдХреЛрдИ рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдирдП рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЛ рдЕрдирд╛рдбрд╝реА рдмрдирд╛ рджреЗрддрд╛ рд╣реИред
  • рдирдП рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЛ рд▓рд╛рдЧреВ рди рдХрд░реЗрдВред

рдореИрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, 1 рдФрд░ рдЕрдВрддрд┐рдо рдХреЛ рдкрд╕рдВрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реВрдВред

рдпрд╣ рдПрдХ рдкреНрд░рдореБрдЦ рд╕рдВрд╕реНрдХрд░рдг рдкрд░рд┐рд╡рд░реНрддрди рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдпрд╣рд╛рдБ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдЪрд┐рдд рдирд╣реАрдВ рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБ рдпрд╣ рд╣реИ рдХрд┐ рд╡рд┐рдВрдбреЛрдЬ рдкреЙрд╡рд░рд╢реЗрд▓ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рддрддреНрдкрд░рддрд╛ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдореБрдЦ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдмрдврд╝рд╛рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдЬреЛ рдпрд╣ рдХрд╣рдирд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдВрдЧрддрддрд╛ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ, рдЯреВрдЯрдирд╛ рдирд╣реАрдВред рдореВрд▓ рдШреЛрд╖рдгрд╛ рд╕реЗ :

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдкреНрд░рдореБрдЦ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЕрд░реНрде рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣рдо рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкрд░рд┐рд╡рд░реНрддрди рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рдХреНрдпрд╛ рд╡рд┐рдХрд▓реНрдк 1 рдФрд░ 2 рд╕рдорд╛рди рдирд╣реАрдВ рд╣реИрдВ? рдпрд╛ рд╡реИрд░рд┐рдПрдмрд▓ рдХреЛ рдЕрднреА рднреА ? рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рд╣реЛрдЧреА, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдХрд┐ рдЙрдирдХреЗ рдкреАрдЫреЗ рдХреЛрдИ рдЕрд╢рдХреНрдд-рд╕рд╣рд╡рд░реНрддреА рдпрд╛ рдЯрд░реНрдирд░реА рдСрдкрд░реЗрдЯрд░ рдирд╣реАрдВ рд╣реИ?

рдпрджрд┐ рдРрд╕рд╛ рд╣реИ, рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдмреИрдХрдЯреНрд░реИрдХрд┐рдВрдЧ рдХреЗ рдмрд┐рдирд╛ рдЯреЛрдХрди / рдкрд╛рд░реНрд╕рд┐рдВрдЧ рд▓реЙрдЬрд┐рдХ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдореЗрдВ рдмрд╣реБрдд рдкрд░реЗрд╢рд╛рдиреА рд╣реЛ рд╕рдХрддреА рд╣реИред рдЬрдм рдЪрд░ ? рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рдЧрд┐рд░рд╛рд╡рдЯ рд╣реЛ рд╕рдХрддреА рд╣реИред

рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдореИрдВ рдЬреЛ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ, рд╡рд┐рдХрд▓реНрдк 2 рд╕рд╛рдорд╛рдиреНрдп рдкрд╕рдВрдж рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ, рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореИрдВ рдпрд╣рд╛рдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЕрдирд┐рдЪреНрдЫрд╛ рдХреЛ рд╕рдордЭрддрд╛ рд╣реВрдВред рдЗрд╕ рддрд░рд╣ рд╕реЗ рдРрд╕рд╛ рдХрд░рдирд╛ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ ? рдХрд╛ рдЙрдкрдпреЛрдЧ рдЪрд░ рдирд╛рдореЛрдВ рдореЗрдВ рд╡реИрд╕реЗ рднреА рдХрд░ рджреЗрдЧрд╛, рдмрд╕ рдЙрди рдкрд░рд┐рджреГрд╢реНтАНрдпреЛрдВ рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдЬреЛ рдЪрд░ рдирд╛рдо рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд┐рдП рдмрд┐рдирд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реИрдВред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдмрд╣реБрдд рд╣реА рдорд╛рдореВрд▓реА рдмрджрд▓рд╛рд╡ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдкрд░рд┐рд╡рд░реНрддрди рдмрджрд▓рддреЗ рд░рд╣рддреЗ рд╣реИрдВ, рдФрд░ рдПрдХ рдЪрд░ рдирд╛рдо рдореЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдирд╣реАрдВ рдХреА рдЬрд╛ рд╕рдХрдиреЗ рд╡рд╛рд▓реА рд╕реНрдерд┐рд░рддрд╛ рдореЗрдВ рдПрдХ рд╡рд┐рд░рд╛рдо рд╣реИ, рд╢рд╛рдпрдж рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рд╕рдмрд╕реЗ рдмреБрд░рд╛ рд╡рд┐рдХрд▓реНрдк рд╣реИред

рдЗрди рдЪреАрдЬреЛрдВ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рдирд┐рдпрдо рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдмрд╣реБрдд рд╕рд╛рд░реА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рд▓рд╛рдЧреВ рд╣реЛрддреЗ рд╣реИрдВред рд╡рд░реНрддрдорд╛рди рдореЗрдВ, рдпрд╣ рдорд╛рдорд▓рд╛ рд╣реИред рд╣рдо рдпрд╣рд╛рдБ рдкрд╛рдиреА рдХреЛ рдореИрд▓рд╛ рдХрд░рдиреЗ рдФрд░ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рджреЗ рд░рд╣реЗ рд╣реИрдВред рдореБрдЭреЗ рдЗрд╕рдореЗрдВ рд╕реЗ рдХреБрдЫ рднреА рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рджрд┐рдЦрд╛рдИ рджреЗ рд░рд╣рд╛ рд╣реИ, рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рд╢рд╛рдпрдж рдЪрд░ рдирд╛рдо ? рдХрдо рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдПрдВ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдХреБрдЫ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдХрдард┐рди рд╣реИрдВ - рдЬреЛ (рдкреНрд░рднрд╛рд╡реА рд░реВрдк рд╕реЗ) рд╣рдореЗрдВ рд╡рд┐рдХрд▓реНрдк 1 рдореЗрдВ рд╡рд╛рдкрд╕ рд▓рд╛рддрд╛ рд╣реИред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рд▓рдЧрднрдЧ ... рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдЕрдм рдмреНрд░реЗрдХ рдирд╣реАрдВ рд▓реЗрдиреЗ рдФрд░ рдЕрд╕реНрдкрд╖реНрдЯ рд╡реНрдпрд╡рд╣рд╛рд░ рд╕реЗ рдмрдЪрдиреЗ рдХрд╛ рдХреЛрдИ рд╡рд┐рд╢реЗрд╖ рдХрд╛рд░рдг рдирд╣реАрдВ рджрд┐рдЦрддрд╛ рд╣реИред

@ vexx32 1 рдФрд░ 2 рдХреЗ рдмреАрдЪ рдереЛрдбрд╝рд╛ рдЕрдВрддрд░ рд╣реИред

# 1 рдХреЗ рд▓рд┐рдП рд╣рдо рд╕рднреА рдирд╛рдореЛрдВ рдХреЛ рдПрдХ рд╕рд╛рде рдЪрд░ рдирд╛рдореЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП ? рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ $x? = 1 , $x?? = 1 $x?x?x = 1 рдкрд╛рд░реНрд╕ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

# 2 рдХреЗ рд▓рд┐рдП, $x? = 1 рдЕрднреА рднреА рдорд╛рдиреНрдп рд╣реИ рд▓реЗрдХрд┐рди $x?.name ${x}?.name рдмрд░рд╛рдмрд░ рд╣реИред рдпрд╣ рдХреЗрд╡рд▓ рдЕрдВрдд рдореЗрдВ ? рд╕рд╛рде рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдирд╛рдореЛрдВ рдХреЛ рддреЛрдбрд╝рддрд╛ рд╣реИ, рдЬреЛ рд╕рджрд╕реНрдпреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рд░рд╣реЗ рд╣реИрдВред рддреЛ, $x? = 1 , $x?? = 1 $x?x?x = 1 рдЕрднреА рднреА рдорд╛рдиреНрдп рд╣реЛрдВрдЧреЗред

рд╣рд╛рдБ, рдореИрдВ рд╡рд╣рд╛рдБ рдкрд░ рдЯреЛрдХрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рдЪрд┐рдВрддрд┐рдд рд╣реВрдБред рджреЛрдиреЛрдВ рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдФрд░ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░ рдХреБрдЫ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рднрд╛рд░реА рд╕рдорд╛рди рдЪрд░ рдирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред

рдореЗрд░реА рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╡рд┐рдХрд▓реНрдк 1 рд╣реИ ... рдПрдХ рдмрд╛рд░ рдХрд╛ рдмреНрд░реЗрдХрд┐рдВрдЧ рдЪреЗрдВрдЬ, рдХрдо рд╕реЗ рдХрдо рдореЗрд░реЗ рд▓рд┐рдП рд╣реИ, рдЗрд╕ рддрд░рд╣ рд╕реЗ рд╡рд┐рд╕рдВрдЧрддрд┐рдпреЛрдВ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдмреЗрд╣рддрд░ рддрд░реАрдХрд╛ рд╣реИ рдХрд┐ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдХрд┐рд╕ рддрд░рд╣ рд╕реЗ рдкрд╛рд░реНрд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдпрджрд┐ рдРрд╕рд╛ рд╣реИ, рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдмреИрдХрдЯреНрд░реИрдХрд┐рдВрдЧ рдХреЗ рдмрд┐рдирд╛ рдЯреЛрдХрди / рдкрд╛рд░реНрд╕рд┐рдВрдЧ рд▓реЙрдЬрд┐рдХ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдореЗрдВ рдмрд╣реБрдд рдкрд░реЗрд╢рд╛рдиреА рд╣реЛ рд╕рдХрддреА рд╣реИред рдЬрдм рдЪрд░ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рдЧрд┐рд░рд╛рд╡рдЯ рд▓рд╛ рд╕рдХрддрд╛ рд╣реИ?

рдореИрдВ рдЗрд╕ рд╕рдВрднрд╛рд╡рдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЗрд╕ рдЪрд┐рдВрддрд╛ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рддрд╛ рд╣реВрдВред рдПрдХ рдХрднреА-рдХрднреА-рд╡рд┐рднрд╛рдЬрдХ рдХреЗ рд░реВрдк рдореЗрдВ ? рд╣реЛрдиреЗ рд╕реЗ рдореБрдЭреЗ рднрд╛рд╖рд╛ рдореЗрдВ рдПрдХ рджрд╛рдВрддреЗрджрд╛рд░ рд░реЗрдЦрд╛ рдХреА рддрд░рд╣ рдорд╣рд╕реВрд╕ рд╣реЛрддрд╛ рд╣реИред

рдпрджрд┐ рдРрд╕рд╛ рд╣реИ, рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдмреИрдХрдЯреНрд░реИрдХрд┐рдВрдЧ рдХреЗ рдмрд┐рдирд╛ рдЯреЛрдХрди / рдкрд╛рд░реНрд╕рд┐рдВрдЧ рд▓реЙрдЬрд┐рдХ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдореЗрдВ рдмрд╣реБрдд рдкрд░реЗрд╢рд╛рдиреА рд╣реЛ рд╕рдХрддреА рд╣реИред рдЬрдм рдЪрд░ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рдЧрд┐рд░рд╛рд╡рдЯ рд▓рд╛ рд╕рдХрддрд╛ рд╣реИ?

рдпрд╣ рдЗрд╕ рдмрд╛рдд рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕реЗ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред рдЬрдм рддрдХ рдЖрдк рдЯреЛрдХрди рдХреЗ рдмрдЬрд╛рдп рд▓реБрдХрд╣реЗрдб рджреГрд╖реНрдЯрд┐рдХреЛрдг рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ рдмреИрдХ-рдЕрдк рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реЛрддрд╛ рд╣реИ, рдЖрдкрдХреЛ рдареАрдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЖрдк рдЖрдЧреЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЬрдм рдЖрдк рдПрдХ рдЪрд░ рдирд╛рдо рдореЗрдВ ? рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдХреМрди рд╕реЗ рд╡рд░реНрдг рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рдЖрдк рдЖрдЧреЗ рдХреНрдпрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЪрд░ рдЯреЛрдХрди рдХреЛ "рд░реИрдк" рдХреИрд╕реЗ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЗрд╕ рдкрд░ рдирд┐рд░реНрдгрдп рд▓реЗрдВред рдпрд╣ рдмрд╣реБрдд рдЬреНрдпрд╛рджрд╛ рдкрд░реЗрд╢рд╛рдиреА рдХреА рдмрд╛рдд рдирд╣реАрдВ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдкреАрдЫреЗ рд╣рдЯрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдпрд╛ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рдЧрд┐рд░рд╛рд╡рдЯ рдЖрдИ рд╣реИред

@ рдкрд╛рд╡рд░рд╢реЗрд▓ / рдкрд╛рд╡рд░рд╢реЗрд▓-рд╕рдорд┐рддрд┐ рдиреЗ рдЖрдЬ рдЗрд╕рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХреА, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреБрдЫ рд╡рд┐рдЪрд╛рд░ рд╣реИрдВ:

  • рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рд╣рдо рдХреНрдпрд╛ рдХрд░рддреЗ рд╣реИрдВ, рд╣рдо рдЕрдкрдиреА рд▓рд┐рдкрд┐рдпреЛрдВ рдХреЗ рд╣рдорд╛рд░реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд╛ рдХреБрдЫ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рд▓реЛрдЧ рдХрд┐рддрдиреА рдмрд╛рд░ рдЪрд░ рдирд╛рдореЛрдВ рдореЗрдВ ? рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ
  • рд╣рдо рдореЗрдВ рд╕реЗ рдХреБрдЫ рдХреА рдПрдХ рдкрд░рд┐рдХрд▓реНрдкрдирд╛ рд╣реИ (рдЬреЛ рдЕрдиреНрдп рд▓реЛрдЧ рдорд╛рдиреНрдп рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ) рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдкрдиреЗ рдЪрд░ рдирд╛рдореЛрдВ рдореЗрдВ ? рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рд╡реЗ рдХрдо рдЙрдиреНрдирдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ (рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдЗрд╕ рдХрдорд░реЗ рдореЗрдВ рд╕рд╣рдордд рд╣реИрдВ рдХрд┐ рд╣рдо рдЗрд╕рд╕реЗ рджреВрд░ рд░рд╣реЗрдВрдЧреЗ рдХреНрдпреЛрдВрдХрд┐ рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдорд╕реНрдпрд╛рдПрдВ рдЬреЛ рдЙрддреНрдкрдиреНрди рд╣реЛ рд╕рдХрддреА рд╣реИрдВ)ред рджреВрд╕рд░реА рдУрд░, рдпрд╣рд╛рдВ рд╡рд░реНрдгрд┐рдд рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдХреЛрдИ рднреА рд╡реНрдпрдХреНрддрд┐ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ (рдЬреИрд╕реЗ ${foo}?.bar ) рдХреЛ рд╕рдордЭрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧрд╛ред рдЗрд╕рд▓рд┐рдП, рд╣рдо рд╡рд┐рдХрд▓реНрдк 3 рдХреЛ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЗрди рдХрдо рдЕрдиреБрднрд╡реА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдкрд░ рдкрд░рд┐рд╡рд░реНрддрди рд╕реЗ рдмрдЪрддрд╛ рд╣реИред (рд▓реЗрдХрд┐рди рдлрд┐рд░, рд╣рдо рдЗрд╕реЗ рдкрд╣рд▓реА рдЧреЛрд▓реА рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдорд╛рдиреНрдп рдХрд░реЗрдВрдЧреЗред)
  • @ daxian-dbw рдиреЗ рд╕рднреА рдЪрд░ рд╕рдВрджрд░реНрднреЛрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдХрдард┐рди рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдЕрдЪреНрдЫрд╛ рдмрд┐рдВрджреБ рдЙрдард╛рдпрд╛ рдЬрдм рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░реНрд╕ $foo рдФрд░ ${foo} рдЙрдкрдпреЛрдЧ рдорд┐рд╢реНрд░рдг рдХрд░ рд░рд╣реЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╣рдо рдЗрд╕ рдмрд╛рдд рдкрд░ рд╕рд╣рдордд рдереЗ рдХрд┐ рдЗрд╕реЗ рдЯреВрд▓реАрдВрдЧ (рд╡реАрдПрд╕ рдХреЛрдб рдкреЙрд╡рд░рд╢реЗрд▓ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреА рддрд░рд╣) рдореЗрдВ рддрдп рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░

рд╕рднреА рдЪрд░ рд╕рдВрджрд░реНрднреЛрдВ рдХреЛ рдЦреЛрдЬрдирд╛ рдХрдард┐рди рд╣реИ рдЬрдм рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░реНрд╕ $ рдлреВ рдФрд░ $ {рдлреВ} рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдорд┐рд▓рд╛ рд░рд╣реЗ рд╣реИрдВ

рдпрд╣ рдЗрд╕ рдмрд╛рдд рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдПрдПрд╕рдЯреА рд╡реИрд░рд┐рдПрдмрд▓ рдирд╛рдо рдХреЛ рдЕрд▓рдЧ рдХрд░рддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ, рдЗрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдпрд╣ рдмреНрд░реЗрд╕рд┐рдЬрд╝ рдХреЛ рджреЗрдЦрддрд╛ рд╣реИред рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдХреЛрдИ рднреА рдЙрдкрдХрд░рдг рдЬреЛ PowerShell AST рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдЙрд╕реЗ рдпрд╣рд╛рдВ рдмреНрд░реЗрд╕рд┐рдЬрд╝ рд╕реЗ рдХреЛрдИ рдкрд░реЗрд╢рд╛рдиреА рдирд╣реАрдВ рд╣реЛрдЧреАред

рд▓реЗрдХрд┐рди рд░реЗрдЧреЗрдХреНрд╕ рдХреЗ рд▓рд┐рдП, рдЗрд╕рдХрд╛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдЕрдзрд┐рдХ рдЬрд╛рдЧрд░реВрдХ рд╣реЛрдирд╛ рд╣реЛрдЧрд╛: varname -> \{?varname\}?

@rjmholt рдореИрдВрдиреЗ рдпрд╣рд╛рдБ рдкрд░ рдПрдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд┐рдпрд╛ред рдПрдХ рддреНрд╡рд░рд┐рдд рдмреНрд░реЗрдХрдбрд╛рдЙрди: 22,000,000+ рдЪрд░ рдирд╛рдореЛрдВ (рдЕрджреНрд╡рд┐рддреАрдп рдирд╣реАрдВ) рдХреЗ рд╕рд╛рде рд▓рдЧрднрдЧ 400,000 рд▓рд┐рдкрд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ, рдХреЗрд╡рд▓ ~ 70 рдЕрджреНрд╡рд┐рддреАрдп рдЪрд░ рдереЗ рдЬреЛ ? рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реБрдПред

рдзрдиреНрдпрд╡рд╛рдж, @mburszley - рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ рдПрдХ рдмрдирд╛рддрд╛ рд╣реИ рдХрд┐ рдмрд╛рд▓реНрдЯреА 3: рд╕рдВрднрд╛рд╡рдирд╛ рдЧреНрд░реЗ рдХреНрд╖реЗрддреНрд░ рдкрд░рд┐рд╡рд░реНрддрди, рдФрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рд╕рд╛рде рдмреЛрдЭ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ {...} рдЕрддреНрдпрдзрд┐рдХ рджреБрд░реНрднрд╛рдЧреНрдпрдкреВрд░реНрдг рд╣реИ, рд╕рдорд╛рдирд╛рдВрддрд░ рдХреЗ рд▓рд┐рдП рджреБрд░реНрднрд╛рдЧреНрдпрдкреВрд░реНрдг рдЬрд░реВрд░рдд $(...) рдЪрд╛рд░реЛрдВ рдУрд░ exit / return / throw && || ред

рдЙрд╕ рдореБрджреНрджреЗ рд╕реЗ рддрд░реНрдХ рдЙрдзрд╛рд░ рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП:

рдпрджрд┐ рд╣рдо рдЪрд░ рдирд╛рдореЛрдВ рдХреЗ рдЖрд╕рдкрд╛рд╕ {...} рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк ?. рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

  • рдирдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ {...} рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреА рдЙрдореНрдореАрдж рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ рдФрд░ рдЖрд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рдирд╣реАрдВ рдЬрд╛рди рдкрд╛рдПрдВрдЧреЗ рдХрд┐ _it_ рдХреНрдпрд╛ рд╣реИ рдЬрдм рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИ (рд╕рдВрднрд╡рддрдГ _undetected_, рдЬрдм рддрдХ рдХрд┐ Set-StrictMode -Version 2 рдпрд╛ рдЙрдЪреНрдЪрддрд░ рдкреНрд░рднрд╛рд╡ рдореЗрдВ рди рд╣реЛ): $o = [pscustomobject] @{ one = 1 }; $o?.one

  • рдПрдХ рдмрд╛рд░ рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ _do_ рдХреЛ {...} рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рд╣реИ:

    • рд╡реЗ рдЗрд╕ рдЕрд╡рд╕рд░ рдкрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рднреВрд▓ рдЬрд╛рдПрдВрдЧреЗ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐-рд╕рд╣рдЬ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
    • рдЬрдм рд╡реЗ рдпрд╛рдж рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдХреГрддреНрд░рд┐рдо рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд┐рд░рд╛рд╢рд╛ рдХрд╛ рдПрдХ рдирд┐рд░рдВрддрд░ рд╕реНрд░реЛрдд рд╣реЛрдЧреА, рдЦрд╛рд╕рдХрд░ рдЬрдм рд╕реЗ {...} рдЯрд╛рдЗрдк рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред

рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ 1 рджрд┐рди рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЧрддрд┐рд╡рд┐рдзрд┐ рдирд╣реАрдВ рд╣реБрдИ

@rjmholt , рдЖрдкрдХреЛ https://github.com/PowerShell/PowerShell/issues/10967#issuecomment -561843650 рд╕реЗ рдЙрджреНрдзреГрдд рдХрд░ рд░рд╣рд╛ рд╣реИ:

рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рд╣рдо рдореМрдЬреВрджрд╛ рд╡реИрдз рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рддреЗ рд╣реИрдВ рдЙрд╕реЗ рддреЛрдбрд╝рдиреЗ рдХрд╛ рд╕рд╣реА рддрд░реАрдХрд╛ рдирд╣реАрдВ рдерд╛ред рдлрд┐рд░ рд╕реЗ, рд╡рд╣рд╛рдБ рдПрдХ рдмрджрд▓рд╛рд╡ рдирд╣реАрдВ рд╣реИ, рд╣рдо рдореЗрдВ рд╕реЗ рдПрдХ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЬрдВрдЧрд▓реА рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓реЗ рд░рд╣реЗ рд╣реИрдВ - рд╣рдордиреЗ рдЙрди рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдХрдИ рдмрджрд▓рд╛рд╡ рдХрд┐рдП рд╣реИрдВ, рдЬрд╣рд╛рдВ рд╣рдордиреЗ рд╕реЛрдЪрд╛ рдерд╛ рдХрд┐ рдкреЗрд╢реЗрд╡рд░реЛрдВ рдиреЗ рд╡рд┐рдкрдХреНрд╖ рдХреЛ рдмрд╛рд╣рд░ рдХрд░ рджрд┐рдпрд╛ рд╣реИ (рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореИрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рд╕рд╣рдордд рд╣реВрдВ рдЙрди рд╕рднреА рдХреЗ рд╕рд╛рде, рдпрд╛ рдпрд╣ рдХрд┐ рд╡реЗ рджреВрд╕рд░реЛрдВ рдХреЛ рд╕рд╣реА рдард╣рд░рд╛рддреЗ рд╣реИрдВ рдпрд╛ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ)ред рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЯреЛрдХрдирд░ рдпрд╛ рдкрд╛рд░реНрд╕рд░ рдХреЗ рдХреБрдЫ рдкрд╣рд▓реВ рдХреЛ рдмрджрд▓рдиреЗ рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рджреЛ рдкреЙрд╡рд░рд╢реЗрд▓ рд╕рдВрд╕реНрдХрд░рдг рдЕрдм рдХреБрдЫ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА рдПрдПрд╕рдЯреА рдЙрддреНрдкрдиреНрди рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рдЗрд╕рд▓рд┐рдП рджреЛ рдкреЙрд╡рд░рд╢реЗрд▓реНрд╕ рдПрдХ рд╣реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЕрд▓рдЧ рддрд░рд╣ рд╕реЗ "рджреЗрдЦреЗрдВрдЧреЗ"ред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╣рдо рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЛ рднреА рдЙрд╕реА рддрд░рд╣ рдирд╣реАрдВ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдХреЛрдИ PSScriptAnalyzer рдирд┐рдпрдо рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдВрднрд╛рд╡рд┐рдд рдорд╛рдорд▓реЛрдВ рдХреЛ рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ; PSScriptAnalyzer рдПрдХ PowerShell рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рдЕрдЧрд▓реЗ рддрдХ рдПрдХ рдЕрд▓рдЧ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рджреЗрдЦреЗрдЧрд╛ред

C # рдХреЗ рд╡рд┐рдкрд░реАрдд, PowerShell рдПрдХ рдЕрд▓рдЧ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЛ рдмрд╛рдж рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдЧрдд рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдПрдХ рд╕рд┐рдВрдЯреИрдХреНрдЯрд┐рдХ рдкрд░рд┐рд╡рд░реНрддрди рд░рдирдЯрд╛рдЗрдо рдХреЗ рд▓рд┐рдП рд╕реАрдорд┐рдд рд╣реИред рдПрдХ рдмрд╛рд░ рдкрд╛рд╡рд░рд╢реЗрд▓ рдПрдХ рд╕рд┐рдВрдЯреИрдХреНрдЯрд┐рдХ рдмреНрд░реЗрдХ рдХрд░ рджреЗрддрд╛ рд╣реИ, рд╣рдо рд╡рд┐рднрд┐рдиреНрди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рдЦрд┐рд▓рд╛рдл рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХрдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рджреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рд╢реЗрд▓ рдФрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ рднрд╛рд╖рд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдЧрдВрднреАрд░ рдореБрджреНрджрд╛ рд╣реИред рдкреЙрд╡рд░рд╢реЗрд▓ рдХреЛ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдЕрдВрджрд░ рддрд░реНрдХ рдХреЗ рд╕рд╛рде рд╕рднреА рдорддрднреЗрджреЛрдВ рдХреЛ рдореЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рдЧрддрд┐рд╢реАрд▓ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рд┐рдВрдЯреИрдХреНрд╕ рдПрдХ рдЧреИрд░-рд╕рдордЭреМрддрд╛рд╡рд╛рджреА рд╕реНрдерд┐рд░ рдЪреАрдЬрд╝ рд╣реИ рдЬреЛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╣реИред рдФрд░ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХрд░рдирд╛ рдЬрд╣рд╛рдВ рдкрд╣рд▓реЗ рдФрд░ рдмрд╛рдж рдореЗрдВ рдорд╛рдиреНрдп рд╣реИ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЦрддрд░рдирд╛рдХ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХрд╛ рдХреЛрдИ рд╕рд░рд▓ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЪреЗрддрд╛рд╡рдиреА рдирд╣реАрдВ рд╣реИ рдФрд░ рджреЛрдиреЛрдВ рдкрд░рд┐рд╡реЗрд╢реЛрдВ рдореЗрдВ рдЗрд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рднреА, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдкрддрд╛ рдирд╣реАрдВ рдЪрд▓ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдЕрд▓рдЧ рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реБрдЖред

рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдореИрдВ рд╕рд░рд╛рд╣рдирд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рдкрд░рд┐рд╡рд░реНрддрди рдмрд╣реБрдд рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХреЗрд╡рд▓ рддрднреА рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрдм рдкреЗрд╢реЗрд╡рд░реЛрдВ рдиреЗ рд╡рд┐рдкрдХреНрд╖ рдХреЛ рдкрдЫрд╛рдбрд╝ рджрд┐рдпрд╛, рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрд╛рд░рдХ рдпрд╣ рд╣реИ рдХрд┐ рдореМрдЬреВрджрд╛ рдХреЛрдб рдХрд┐рддрдирд╛ рдЯреВрдЯрддрд╛ рд╣реИред

рд╣рдо рд╡рд┐рднрд┐рдиреНрди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рдЦрд┐рд▓рд╛рдл рдХрд╛рдо рдХрд░ рд╕рдХрдиреЗ рд╡рд╛рд▓реА рд▓рд┐рдкрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХрдо рдХрд░ рджреЗрддреЗ рд╣реИрдВ
рдЕрд░реНрде рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рджреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ

рд╣рдо рдпрд╣рд╛рдВ рдПрдХ _new_ рд╕рд┐рдиреЗрдЯрд┐рдХ рдлреАрдЪрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ ( ?. ), рдЗрд╕рд▓рд┐рдП рдкрд░рд┐рднрд╛рд╖рд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬреЛ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИрдВ _cannot_ (рд╕рд╛рд░реНрдердХ рд░реВрдк рд╕реЗ) рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдкрд░ рдЪрд▓рддреА рд╣реИрдВ - рдЬрдм рддрдХ рдХрд┐ рдЖрдк рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЙрди рд╢рд░реНрддреЛрдВ рдХреЛ рдирд╣реАрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдЬреЛ рд╡рд┐рд░рд╛рд╕рдд-рд╕рдВрд╕реНрдХрд░рдг-рд╕рдВрдЧрдд-рд╕рдВрдЧрдд рдкрде рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╢рд╛рдпрдж рд╣реА рдЗрд╕рдХреЗ рд▓рд╛рдпрдХ рд╣реИ - рдЖрдк рддреЛ рдмрд╕ рд╡рд┐рд░рд╛рд╕рдд рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд╕рд╛рде рд░рд╣рдирд╛ рд╣реЛрдЧрд╛ред

рд╣рд╛рдВ, рдкреБрд░рд╛рдиреА рд▓рд┐рдкрд┐рдпреЛрдВ рдореЗрдВ $var?.foo рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдЬреЛ рдПрдХ рдЪрд░ рдирд╛рдо рдХреЗ рд░реВрдк рдореЗрдВ $var? , рд▓реЗрдХрд┐рди:

  • ? рдХреЛ рдХрднреА рднреА рдПрдХ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЗ рднрд╛рдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдП _woutout рдиреЗ рдЗрд╕реЗ {...} _ рдореЗрдВ рд╕рдВрд▓рдЧреНрди рдХрд┐рдпрд╛ред

  • рдЪреВрдВрдХрд┐ рдРрд╕рд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд╣реИ рдФрд░ рд╢рд╛рдпрдж рдХрдИ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рднреА _unknown_, рдРрд╕реЗ рдЪрд░ рдирд╛рдо рдЬрдВрдЧрд▓реА рдореЗрдВ рдЕрддреНрдпрдзрд┐рдХ рджреБрд░реНрд▓рдн рд╣реИрдВ, рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЕрдиреБрднрд╡ рд╕реЗ рдмреЛрд▓рддреЗ рд╣реБрдП, рд▓реЗрдХрд┐рди @mburszley рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЕрдзрд┐рдХ рдореВрд░реНрдд рдкреНрд░рдорд╛рдг рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ ред

    • рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд░реВрдмреА рдХреЗрд╡рд▓ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛рдУрдВ рдХреЗ _end_ рдкрд░ ? (рдФрд░ ! ) рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдФрд░ рд╡рд╣рд╛рдБ рдХреЗрд╡рд▓ _method_ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╣реИрдВ, рдФрд░ рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рд░реВрдмреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдкрддрд╛ рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рд╡рд╣реА рдЪреАрдЬрд╝ред

рддреЛ, рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдмреЛрд▓:

  • рдореМрдЬреВрджрд╛ рдХреЛрдб рдХрд╛ рдЕрдзрд┐рдХрд╛рдВрд╢ рд╣рд┐рд╕реНрд╕рд╛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рд╣реЛрдЧрд╛ - рдПрдХ рдЯреЛрдХрди рдЬреИрд╕реЗ $var?.foo рдмрд╕ рдХрд╛ рд╕рд╛рдордирд╛ рдирд╣реАрдВ рдХрд░рдирд╛ рдкрдбрд╝реЗрдЧрд╛ред

  • рдпрджрд┐ рдЖрдк рдирдП рд╢рдмреНрджрд╛рд░реНрдереЛрдВ рдХреЗ рд╕рд╛рде $var?.foo рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рддреЛ рд╣рд╛рдБ, рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдкрд░ рдЪрд▓рдиреЗ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ (рд╕реНрдкрд╖реНрдЯ рддрд░реАрдХреЗ рд╕реЗ рдЯреВрдЯрдиреЗ рдХреЗ рдмрдЬрд╛рдп), рдЗрд╕ рдмрд╛рдд рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╕рдЦреНрдд рдореЛрдб рдкреНрд░рднрд╛рд╡ рдореЗрдВ рд╣реИ - рд▓реЗрдХрд┐рди _you рд╣рдореЗрд╢рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рд╡реИрд╕реЗ рднреА рдЕрдкрдиреЗ рдХреЛрдб рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдиреНрдпреВрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдВред рд╡реИрд╕реЗ рднреА ( #requires -Version , рдореЙрдбреНрдпреВрд▓-рдкреНрд░рдХрдЯ рдХреБрдВрдЬреА)ред

рд╕рднреА рдореЗрдВ, рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ рдПрдХ рдмрд╛рд▓реНрдЯреА 3 рдкрд░рд┐рд╡рд░реНрддрди рдХрд╛ рдПрдХ рд╕реНрдкрд╖реНрдЯ рдорд╛рдорд▓рд╛ рд╣реИ: рдПрдХ рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ рддреЛрдбрд╝рдиреЗ рд╡рд╛рд▓рд╛ рдкрд░рд┐рд╡рд░реНрддрди рдЬреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд▓рд╛рднреЛрдВ рдХреА рдкреЗрд╢рдХрд╢ рдХрд░рддреЗ рд╕рдордп рдмрд╣реБрдд рдХрдо рдореМрдЬреВрджрд╛ рдХреЛрдб рдХреЛ рддреЛрдбрд╝рддрд╛ рд╣реИ (рдпрд╛, рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд░реВрдк рд╕реЗ, рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рдХрд╛рд░рдг рдмрд╛рд░рд╣рдорд╛рд╕реА рд╕рд┐рд░рджрд░реНрдж рд╕реЗ рдмрдЪрддрд╛ рд╣реИ)ред

@ mklement0 рд╣рдо

рдЕрдЪреНрдЫрд╛ рд▓рдЧрддрд╛ рд╣реИ, @ рд╕реНрдЯреАрд╡рдПрд▓-рдПрдордПрд╕рдПрдлрдЯреА - рдХреГрдкрдпрд╛ # 11379 рджреЗрдЦреЗрдВред

рдореИрдВ рдпрд╣рд╛рдВ рд╕рднреА рдХреЛ рдлрд┐рд░ рд╕реЗ рд╕рдорд░реНрдерди (рдпрд╛, рд╣рд╛рдВрдлрдирд╛, рдЧреИрд░-рд╕рдорд░реНрдерди) рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рддрд╛ рд╣реВрдВред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

andschwa picture andschwa  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

alx9r picture alx9r  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

pcgeek86 picture pcgeek86  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

abock picture abock  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

rkeithhill picture rkeithhill  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ