代码之家  ›  专栏  ›  技术社区  ›  Taylor Gerring

PowerShell v1:是否可以将switch语句的结果赋给变量?

  •  5
  • Taylor Gerring  · 技术社区  · 17 年前

    是否可以将switch语句的结果赋给变量?

    例如,而不是:

    switch ($Extension) 
        { 
            doc {$Location = "C:\Users\username\Documents\"; break} 
            exe {$Location = "C:\Users\username\Downloads\"; break}
            default {$Location = "C:\Users\username\Desktop\"}
        }
    

    是否可以做类似的事情:

    $Location = 
    {
        switch ($Extension) 
        { 
            doc {"C:\Users\username\Documents\"; break} 
            exe {"C:\Users\username\Downloads\"; break}
            default {"C:\Users\username\Desktop\"}
        }
    }
    

    尝试上述操作会导致$location将整个代码块作为字符串包含。

    2 回复  |  直到 17 年前
        1
  •  7
  •   Steven Murawski    17 年前

    对于v1,我将把switch语句包装在一个函数中。

    function Get-DocumentLocation($Extension)
    {
        switch ($Extension) 
        { 
            doc {"C:\Users\username\Documents\"; break} 
            exe {"C:\Users\username\Downloads\"; break}
            default {"C:\Users\username\Desktop\"}
        }
    }
    
    $Location = Get-DocumentLocation $extension
    
        2
  •  2
  •   Joey Gumbo    17 年前

    以下内容有效吗?

    $Location = (switch ($Extension) {
                   doc {"C:\Users\username\Documents\"; break}
                   exe {"C:\Users\username\Downloads\"; break}
                   default {"C:\Users\username\Desktop\"}
                 })
    

    或者也许

    $Location = $(switch ($Extension) {
                   doc {"C:\Users\username\Documents\"; break}
                   exe {"C:\Users\username\Downloads\"; break}
                   default {"C:\Users\username\Desktop\"}
                 })
    

    现在没有v1测试,但我想这可能有效。