powershell - 在 PowerShell 中更改函数内变量的声明数据类型
问题描述
我有一个 PowerShell 脚本,我想在开始时声明一个变量数据类型,并且有一个函数可以在某些条件下更改此数据类型。如果这是在函数之外完成的,我可以使它工作,但我无法更改函数内部的数据类型,即使我使用范围修饰符。
如果我把它放在脚本 foobar 中:
[string]$foo = "123"
[int]$foo = $foo
$foo.GetType()
并执行脚本:
PS C:\> .\foobar.ps1
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True Int32 System.ValueType
但如果我把这个:
[string]$foo = "123"
Function bar {
[int]$script:foo = $foo
$foo.GetType()
}
bar
我执行:
PS C:\> .\bar.ps1
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True String System.Object
这里需要注意的是,第二种情况仅在您从脚本执行代码时才会发生。直接从终端执行时结果会有所不同。我希望数据类型在两种情况下都更改为整数。有任何想法吗?
解决方案
传入参考变量,如下所示
[string]$foo = "123"
Function bar([ref]$foo) {
[int]($foo) ='123'
## Get-Variable -Name foo -Scope global | select fullname
$foo.GetType()
}
推荐阅读
- reactjs - 按下后退按钮时反应 JS 路由问题
- amazon-web-services - 如何从 Glue Dev Endpoint 运行胶水脚本
- c# - 如何创建实现少数接口(或接口子集)的类型变量?
- r - r gbm 包摘要函数执行错误
- clojure - 在 clojure 函数参数定义中使用 ^
- mysql - 在mysql中使用ifnull和索引创建
- ios - 如果语句不适用于计时器
- firebase - AngularFire httpsCallable Object(...) 不是函数
- php - 查找带有图像 URL 的 XML 属性并下载它
- javascript - LazyLaoding CSS 背景(不是 HTML标签)