PowerShell 中的“@{}”是什么意思
What is '@{}' meaning in PowerShell
我这里有一行脚本供审查,我注意到变量声明有一个值:
function readConfig {
Param([string]$fileName)
$config = @{}
Get-Content $fileName | Where-Object {
$_ -like '*=*'
} | ForEach-Object {
$key, $value = $_ -split '\s*=\s*', 2
$config[$key] = $value
}
return $config
}
我想知道 @{}
在 $config = @{}
中是什么意思?
@{}
的含义
可以通过不同的方式看到。
如果 @{}
为空,则定义空散列 table。
但是如果大括号之间有东西,它可以用在展开操作的上下文中。
- 哈希Table
- 飞溅
我认为没有必要解释哈希 table 是什么。
Splatting 是一种将一组参数值作为单元传递给命令的方法。
$prints = @{
Name = "John Doe"
Age = 18
Haircolor = "Red"
}
Write-Host @prints
希望对您有所帮助! BR
编辑:
关于提问者更新后的代码,答案是
它定义了一个空散列table。
PowerShell 中的 @{}
定义了一个哈希表,一种用于将唯一键映射到值的数据结构(在其他语言中,这种数据结构称为 "dictionary" 或 "associative array")。
@{}
本身定义了一个空哈希表,然后可以用值填充,例如像这样:
$h = @{}
$h['a'] = 'foo'
$h['b'] = 'bar'
哈希表也可以定义为已经存在的内容:
$h = @{
'a' = 'foo'
'b' = 'bar'
}
但是请注意,当您在 PowerShell output 中看到类似的符号时,例如像这样:
abc: 23
def: @{"a"="foo";"b"="bar"}
通常不是哈希表,而是自定义对象的字符串表示形式。
我这里有一行脚本供审查,我注意到变量声明有一个值:
function readConfig {
Param([string]$fileName)
$config = @{}
Get-Content $fileName | Where-Object {
$_ -like '*=*'
} | ForEach-Object {
$key, $value = $_ -split '\s*=\s*', 2
$config[$key] = $value
}
return $config
}
我想知道 @{}
在 $config = @{}
中是什么意思?
@{}
的含义
可以通过不同的方式看到。
如果 @{}
为空,则定义空散列 table。
但是如果大括号之间有东西,它可以用在展开操作的上下文中。
- 哈希Table
- 飞溅
我认为没有必要解释哈希 table 是什么。
Splatting 是一种将一组参数值作为单元传递给命令的方法。
$prints = @{
Name = "John Doe"
Age = 18
Haircolor = "Red"
}
Write-Host @prints
希望对您有所帮助! BR
编辑:
关于提问者更新后的代码,答案是
它定义了一个空散列table。
@{}
定义了一个哈希表,一种用于将唯一键映射到值的数据结构(在其他语言中,这种数据结构称为 "dictionary" 或 "associative array")。
@{}
本身定义了一个空哈希表,然后可以用值填充,例如像这样:
$h = @{}
$h['a'] = 'foo'
$h['b'] = 'bar'
哈希表也可以定义为已经存在的内容:
$h = @{
'a' = 'foo'
'b' = 'bar'
}
但是请注意,当您在 PowerShell output 中看到类似的符号时,例如像这样:
abc: 23 def: @{"a"="foo";"b"="bar"}
通常不是哈希表,而是自定义对象的字符串表示形式。