在powershell中想打印3行“Hello World!”,则可以简单地使用for循环来实现:

# -lt 表示小于
for ($i = 0; $i -lt 3; $i++) {
    Write-Host "Hello World!"
}
pause # 暂停脚本

   运行结果:


   现在我们把这个改成lambda方式实现。定义一个函数,第一个参数为循环几次,第二个参数接受一个“lambda对象”,每次循环给它传递$i的值,并运行其中的代码。

   如果你比较熟悉Kotlin,你就会发现这其实就是Kotlin的一个高阶函数“repeat”。(点击跳转CSDN查看介绍

   powershell没有原生的lambda设计,但是可以借助scriptblock代码块来实现相同的效果,具体实现:

# Powershell 函数的命名风格是大写字母开头
function Repeat ([int]$times, [scriptblock]$lambda) {
    for ($i = 0; $i -lt $times; $i++) {
        # & 符号用来运行代码块,$result是lambda每次运行的返回值,$i是每次向lambda传递的参数
        $result = & $lambda $i
        # 打印 $result 的值
            Write-Host $result
    }
}

# 调用Repeat函数,参数要使用空格分隔。param用于接受参数。
Repeat (5) { param ($i)
    # return 关键字可以省略
    # -join 用于连接字符串
    # $($i + 1) 表示数学运算,$i + 1 只是连接字符串
    return -join ("第", $($i + 1), "次打印 Hello World!")
}

pause # 暂停脚本

   运行结果:

   各位如果觉得有用请点击下方的打赏,扫描二维码给我投币,创作不易,感谢支持!