【发布时间】:2018-12-07 23:38:47
【问题描述】:
如何通过引用父作用域来传递字符串?
这不起作用,因为字符串不是可接受的“值”。
function Submit([ref]$firstName){
$firstName.value = $txtFirstName.Text
}
$firstName = $null
Submit([ref]$firstName)
$firstName
错误:“在此对象上找不到属性‘值’;请确保它存在且可设置”
这样做不会产生错误,但也不会改变变量:
$firstName = "nothing"
function Submit([ref]$firstName){
$firstName = $txtFirstName.Text
}
Submit([ref]$firstName)
$firstName
编辑:
自己做第一个代码块是可行的。但是,当尝试在我的脚本中执行此操作时,它会再次返回错误。我修复了它足以分配变量并做我想做的事,但它仍然抛出一个错误,我想知道如何解决这个问题。我认为这是因为它不喜欢变量;在运行会话期间发生变化。这是我的脚本的链接
https://github.com/InconspicuousIntern/Form/blob/master/Form.ps1
【问题讨论】:
-
我在下面发布了一个“答案”。我将通过 cmets 与您合作。
-
为什么需要通过引用传递字符串?一个函数可以输出一个字符串。
-
您的第一个 sn-p 在概念上是正确的,应该按原样工作(在 v5.1 中验证,但我不希望 v3 有不同的行为,除非有错误)。预计第二个 sn-p 不起作用,因为通过直接分配给
$firstName,您正在创建一个 new[ref]实例。 -
我有多个字符串。欢迎使用更好的方法。自己做第一个代码块是可行的。但是,在我的代码中执行此操作会再次返回错误。我修复了它足以分配变量并做我想做的事,但它仍然抛出一个错误,我想知道如何解决这个问题。这是我的整个脚本github.com/InconspicuousIntern/Form/blob/master/Form.ps1
标签: function powershell parameter-passing pass-by-reference powershell-3.0