这些叫什么?在powershell中编写脚本时,我可以使用它们来设置或转换变量的数据类型,但这是什么术语呢?这些有官方文件吗?
示例:
$var = @("hello","world")
If ($var -is [array]) { write-host "$var is an array" }
Don Cruickshank有用的回答提供了一个谜题,但让我试着给出一个全面的概述:
[
表达式本身就是一个类型文本,即以System.reflection.TypeInfo
实例的形式对.NET类型的引用,该实例是它所表示的类型的丰富反射源。
可以是.NET类型的全名(例如,[System.Text.RegularExpressions.regex]
-可以选择省略系统.
前缀([Text.RegularExpressions.regex]
)或PowerShell类型加速器的名称(例如,[regex]
)
类型文字还用于以下构造:
>
作为强制转换,将(RHS[1])操作数强制为指定类型,如果可能:
[datetime] '1970-01-01' # convert a string to System.DateTime
作为类型约束:
>
在函数或脚本中指定参数变量的类型:
function foo { param([datetime] $d) $d.Year }; foo '1970-01-01'
为所有将来的赋值锁定常规变量的类型:[2]
[datetime] $foo = '1970-01-01'
# ...
$foo = '2021-01-01' # the string is now implicitly forced to [datetime]
作为-is
和-As
运算符的RHS,用于类型测试和条件转换:
>
-is
测试不仅针对确切类型,而且针对派生类型以及接口实现:
# Exact type match (the `Get-Date` cmdlet outputs instances of [datetime])
(Get-Date) -is [datetime] # $true
# Match via a *derived* type:
# `Get-Item /` outputs an instance of type [System.IO.DirectoryInfo],
# which derives from [System.IO.FileSystemInfo]
(Get-Item /) -is [System.IO.FileSystemInfo] # $true
# Match via an *interface* implementation:
# Arrays implement the [System.Collections.IEnumerable] interface.
1..3 -is [System.Collections.IEnumerable] # true
-as
将LHS实例转换为RHS类型的实例(如果可能),否则返回$null
:
'42' -as [int] # 42
'foo' -as [int] # $null
[1]在运算符和数学方程的上下文中,通常使用首字母LHS和RHS,分别指左侧操作数和右侧操作数。
[2]从技术上讲,参数和常规变量之间没有真正的区别:类型约束在这两种情况下的作用方式相同,但参数变量在调用时自动绑定(赋值)后,通常不会再次赋值。
问题内容: 有人可以解释为什么跟随返回“ cc”吗? 有人告诉我,因为它将每个匹配项都放入了group(1)中,所以最后一个匹配项是’cc’。真的吗? 那么下面如何解释? 问题答案: 重复捕获组:组号保持不变 由定义的组是组1。量化器重复它。每当引擎能够重复该组(匹配两个字符)时,组1就会被覆盖。 引擎开始匹配时,捕获到组1 然后捕获到组1 然后捕获到组1。 当您检查组1时,引擎将返回。所有其他捕
问题内容: 我正在查看类似于以下内容的代码行: 我认为符号字符串是指每小时,每分钟等显示的数字字符的数量-或类似的东西,我不确定。 通常,我可以弄清楚这种情况,但是在Google上搜索“%02d%01d”时找不到任何有用的参考。有人能为我阐明一下吗? 问题答案: http://www.cplusplus.com/reference/clibrary/cstdio/printf/ 相同的规则应适用于
以下是全部代码: 输出是: 编译器背后发生了什么导致了这些结果?
问题内容: 使用以下代码时,我们的代码需要10分钟才能虹吸68,000条记录: 但是,当我们执行以下操作时,仅需1秒钟: 这是代码: 我曾经用python编写过的所有代码都使用第一个选项。这只是基本的字符串操作…我们正在从文件中读取输入,对其进行处理并将其输出到新文件中。我100%确信第一种方法的运行时间比第二种方法长约600倍,但是为什么呢? 正在处理的文件是csv,但使用〜而不是逗号。我们在这
在Hugo模板中,我知道您可以使用< code>function param调用函数: 但在文档中,我还看到您还可以: 我从未遇到过这种调用函数的方式(在Ruby/Python等语言中)。这是围棋特有的,还是雨果特有的?这种调用函数的方式是如何调用的?另外,如果你有不止一种类型的论点,你能做到吗?
hotspot jdk1.8: 如上,需要深拷贝字符串数组,防止调用方修改. 这里clone()的行为是来源于Object对象的,貌似是拷贝的StringTable中的字符串字面量(不是字符串对象)的引用地址(值传递),不知道是不是这样的?