嗨,我是每个人都是新手,并尝试对每个循环有所了解但我不明白+ $在下面的脚本中意味着什么以及为什么它们一起使用
$names = "jones","mike","Ash"
foreach ($name in $names)
{
"$name = " + $name.length
}
答案 0 :(得分:4)
首先,它是 PowerShell 。没有空间并且观察字母的大小写。
第二,RTFM。 Technet上有很多文档。利用它。有内置的帮助。阅读Help about_*
主题。
回到你的问题,foreach
循环遍历所有集合。在您的示例中,$names
是一个字符串数组。数组是一个集合。
在您的示例中,当foreach
循环遍历集合时,它会将集合中的每个项目复制到另一个名为$name
的变量。
foreach ($name in $names) {}
在foreach
循环中,您可以使用$name
变量来检索项目中存储的值。因此,以下代码将打印集合中的值。
foreach ($name in $names) {
$name
}
$name
是一个字符串。因此,$name.Length
为我们提供了该字符串的长度。
+
是算术运算符。它可以用于连接字符串。在这种情况下,$name + $name.length
将导致值附加长度。
以下是带输出的修改示例:
$names = "jones","mike","Ash"
foreach ($name in $names)
{
$name + $name.Length
}
jones5
mike4
Ash3
最后,来看你的例子和输出:
$names = "jones","mike","Ash"
foreach ($name in $names)
{
"$name = " + $name.Length
}
jones = 5
mike = 4
Ash = 3
我希望这可以为你提供一些关于这个例子正在做什么的解释。
答案 1 :(得分:1)
让我们一步一步地看到:
$names = "jones","mike","Ash"
这声明了一个包含三个字符串项的数组,并将其存储在$ names变量中。
foreach ($name in $names) { }
这是一个遍历$ names数组变量中所有项的循环。每个项目都“复制”到“$ name”变量中,因此当您使用$name
时,您正在使用循环中的当前项目。
"$name = " + $name.length
这将输出$ name变量的内容和$ name表示的对象的“length”属性。如果你还记得,我们声明了一个字符串项数组,换句话说是字符串对象。字符串对象具有属性和方法,其中一个属性是length
属性,用于指示字符串的长度。
但是,符号有点奇怪。在PowerShell中,嵌入到字符串文字中的变量(例如"start $name end"
)将替换为其字符串值,因此"start $name end"
将成为第一个项目的start jones end
。但是,您不能只写{ {1}},所以在这个例子中,作者使用+来连接(追加)两个字符串。另一种解决方案是"start $name.length end"
:这样一个字符串文字将包含字符串及其长度属性