Powershell-结合switch语句和循环

下面有一段代码,它从json文件中获取值。这是一个字符串数组-> var acl = require('acl'); acl = new acl(new acl.memoryBackend()); acl.allow([ { roles:['Admin'],allows:[ {resources:'/admin/chairman',permissions:'*'},] } ]); acl.addUserRoles('joe','Admin') //joe username who loggedIn const isAuthenticated = (req,res,next) => { if (req.isAuthenticated()) { next() } res.redirect('login') } app.get('/api/users',[isAuthenticated,acl.middleware()],(req,res) => { res.render(__dirname + '/views/user.ejs'); }); 。我想避免-> $Json.Names之类的重复行。第二种情况是数组$Json.Names[0].Name {$Json.Names[0].Name; break}的长度可以不同,数组可以包含6个或更多或更少的元素。我想使这个switch语句更具弹性。我尝试使用$Json.Namesfor loop,但是在这种情况下,这些循环对我没有帮助。有什么聪明的方法可以使此代码更复杂/更有弹性,并避免重复提到的代码行while loop

$Json.Names[0].Name  {$Json.Names[0].Name; break}
c275896741 回答:Powershell-结合switch语句和循环

假定此结构:

$json = [pscustomobject]@{names = [pscustomobject]@{name ='joe'},[pscustomobject]@{name ='john'},[pscustomobject]@{name ='james'}}

假设$ member是一个名字,你可以说

$name = $json.names.name -eq $member # an array of one

如果没有匹配项,则$ name将为空数组。

if (! $name) { $name = 'Unknown Name' }

或者,以Powershell 7预览5的语言:

$name ??= 'Unknown Name'

您可能还想对名称进行哈希表处理。

,

您可以利用属性枚举并显着简化代码:

long int memo[100] = {0};

long int fib(int n) {
    if(n<2) {
        return n;
    }
    if(memo[n] != 0) {
        return memo[n];
    }
    else {
        memo[n] = fib(n - 1) + fib(n - 2);
        return memo[n];
    }
}
本文链接:https://www.f2er.com/3153345.html

大家都在问