用对象的属性来生成函数

2023-12-31

在 PowerShell 中,您可以将多个参数传递给函数或 cmdlet,方法是将它们包装在哈希表变量中,然后传递前缀为该变量@代替$.

是否可以使用作为另一个对象的属性的哈希表(即作为一个衬垫)进行splat?例如下面我首先必须分配属性(testInt, testString) 到另一个变量,然后我可以将其展开到Demo。我想要某种方法来避免这个额外的步骤,但一直无法找到一个简洁的解决方案......

function Demo {
    [CmdletBinding()]
    Param (
        [Parameter()]
        [string]$One
        ,
        [Parameter()]
        [string]$Two
    )
    "1 = $One"
    "2 = $Two"
}
$test = @{
    testInt = @{ 
        One = '1'
        Two = '2'
    }
    testString = @{
        One = 'One'
        Two = 'Two'
    }
}

$t = $test.testInt
Demo @t 
$t = $test.testString
Demo @t

Demo @test.testInt #this doesn't work / I've also tried similar options with various castings and braces though to no avail.

Update

提交建议:https://github.com/PowerShell/PowerShell/issues/5227 https://github.com/PowerShell/PowerShell/issues/5227


AFAIK splat 对象属性或数组或哈希表元素的唯一方法是将其分配给变量,然后 splat 该变量

$p = $variable.property
demo @p

符号@variable.property是无效的,并且两者都不是@() nor @{}可以用来允许这样的语法,因为它们已经具有不同的含义(数组构造和哈希表构造)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用对象的属性来生成函数 的相关文章

随机推荐

  • Android Studio - 错误:程序类型已存在

    当我尝试编译代码时 Android Studio 3 0 1 上出现以下错误 Error Program type already present com squareup picasso Action RequestWeakReferen
  • BasicDatasource 和 PoolingDatasource 之间的区别

    org apache commons dbcp BasicDatasource 和 PoolingDataSoure 之间有什么区别 两者都支持连接池吗 何时使用它们中的每一个 基本数据源是 作为javadoc http commons a
  • Mustache 在服务器 (rails) 和客户端 (javascript) 上渲染

    是否有关于在服务器 使用 Rails 和客户端 使用 javascript 上使用 Mustache 最佳实践的文档 hello world mustache Hello planet some other file
  • C# - 按块上传文件 - 最后一个块大小错误

    我正在尝试将大文件分块上传到第三部分服务 但我对最后一块有问题 最后一个块总是小于 5mb 但所有块都包括 最后一个大小相同 5mb 我的代码 int chunkSize 1024 1024 5 using Stream streamx n
  • PowerShell:如何获得正确的 if else 构造?

    我正在尝试学习 powershell 并尝试构建一个 if else 语句 if Get Process Select Object name eq svchost Write Host seen else Write Host not s
  • Facebook 机器人分析事件记录

    我目前正在开发一个消息机器人 并尝试使用 Facebook 的应用程序分析平台记录其他事件 相关文件 消息机器人的事件 https developers facebook com docs app events bots for messe
  • 如何使用 PHPUnit 测试远程 Postgres 服务器上的数据库交互?

    我正在尝试对我创建的类进行单元测试 但大多数类都处理数据库 我已经在本地测试了非数据库相关的类 但当涉及到使用数据库时 尤其是远程数据库 我感到很困惑 该指南显示使用 PDO 访问本地数据库 该数据库似乎转储到 XML 文件 因此它对我来说
  • 找到颜色范围内最接近的颜色匹配[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有十个十六进制 RGB 颜色值 它们是肤色 我希望能够找到与特定十六进制 RGB 值最接近的匹配 我会以某种方式从起始颜色迭代直到落
  • android Recyclerview Layoutmanager的onLayoutChildren在item内容更改时调用

    我有一个带有自定义布局管理器的回收器视图 它是一个twowayview staggeredgridview布局管理器https github com lucasr twoway view blob master layouts src ma
  • 禁止 XmlSerializer 发出空值类型

    请考虑以下 Amount 值类型属性 该属性被标记为可为 null 的 XmlElement XmlElement IsNullable true public double Amount get set 当可为 null 的值类型设置为
  • 实例变量定义和实例块

    我有以下代码 s Hello String s 这编译得很好 这意味着变量定义在实例块之前执行 但是 如果我使用以下代码 它不会编译 错误 非法前向引用 s Hello String ss s String s 因此 不可能在变量之前的实例
  • setwd() 在当前工作目录中

    我有一个文件夹列表 每个文件夹中都有一个与 R 相同的脚本 必须在文件夹中的文件上运行 我编写了一次脚本并将脚本复制到每个文件夹中 问题是我有大约 100 个文件夹的列表 因此我不可能手动在当前工作目录中 setwd 我想知道是否可以设置当
  • Arm GCC 链接器:如何将数据放在 (rw) 非易失性存储器中的绝对地址处

    我面临以下问题 我正在对 ARM cortex M4 微控制器进行编程 我希望它具有 IP 地址 网络掩码 网关等的默认值 该默认值应该可以通过串行通信进行更改 并且更改应该是持久的 例如 IP 地址和网络掩码的默认值为 192 168 1
  • AngularJS 按下按键时更改多行选择 ng-grid 属性

    我在视图中定义了以下网格 div class gridStyle hide div 我想仅在按下 ctrl 键时才允许多重选择 所以我在控制器中将 multiSelect 属性定义为 false scope resultsOptions d
  • mailto:带附件的链接

    我为我的客户制作了一个应用程序 它提供具有以下示例结构的 zip 文件 index html files file pdf inc style css 基本上 用户将使用名为 Sites 2 Go 的应用程序将 zip 文件传输到他们的 i
  • SQL Server 中什么被视为“大”表?

    我有一个表 其中有 1000 万条记录 这算是很多记录吗 我应该担心搜索时间吗 如果没有 它会继续增长 那又怎样is算一张大桌子吗 表大小对搜索时间的影响有多大 我可以采取哪些措施来改善这些问题 最好是在它们成为问题之前 大 就像 聪明 它
  • v8旧空间和新空间是什么?

    Node js据我所知 有两个参数来控制内存分配 max new space size and max old space size 提到的具体是什么NEW SPACE and OLD SPACE things 在分代垃圾收集器 V8 使用
  • 创建索引视图时如何引用表两次?如果没有它,我可以基于 2 个表和多行强制执行唯一性吗?

    EDIT 添加了我试图禁止的示例数据 这个问题类似于 无法在视图上创建聚集索引 因为我两次引用同一个表 有什么解决方法吗 https stackoverflow com questions 1011595 cannot create a c
  • 具有公共抽象基类的对象的集合

    我有一个名为 generic 的抽象类 实现如下 public abstract class generic public string creatorID get set public string itemID get set publ
  • 用对象的属性来生成函数

    在 PowerShell 中 您可以将多个参数传递给函数或 cmdlet 方法是将它们包装在哈希表变量中 然后传递前缀为该变量 代替 是否可以使用作为另一个对象的属性的哈希表 即作为一个衬垫 进行splat 例如下面我首先必须分配属性 te