rme*_*dor 5 parameters powershell function
这是我用过的每种语言都非常简单的任务,但我似乎无法在PowerShell中弄明白.我在C中谈论的一个例子:
abs(x + y)
Run Code Online (Sandbox Code Playgroud)
x + y评估表达式,结果abs作为参数传递给我...如何在PowerShell中执行此操作?到目前为止,我唯一想到的方法是创建一个临时变量来存储表达式的结果,然后传递它.
PowerShell似乎有非常奇怪的语法和解析规则,不断地让我感到惊讶,就像这种情况一样.有没有人知道解释语言基本理论的文档或教程?我无法相信这些都是特殊情况,必须有一些押韵或理由,我还没有阅读过的教程解释.是的,我已经阅读了这个问题,所有这些教程都很糟糕.我几乎被降级为从现有代码中学习.
在您的情况下,简单地用括号括起表达式将允许您将它传递给您的函数.
您需要这样做,因为PowerShell具有多种解析模式,具体取决于命令的开头.
表达式模式类似于大多数其他语言解析的方式 - 数字是数字和字符串被引用.
命令模式将所有内容视为字符串,但变量和括号除外.这里的字符串不需要引用.
1+2 Expression mode - starts with number
"string" Expression mode - starts with quote
string Command mode - starts with letter
& "string" Command mode - starts with &
. "string" Command mode - starts with . and a space
.123 Expression mode - starts with . and number (without space)
.string Command mode - starts with a . that is part of a command name
Run Code Online (Sandbox Code Playgroud)
您可以通过用括号括起命令来在一行中混合模式.
如果您通过以下方式定义函数abs,则可以看到此效果:
function Abs($value)
{
Write-Host $args
if($value -lt 0) { -$value } else { $value }
}
Abs 1 + 2
#Prints: + 2
#Returns: 1
Abs 1+2
#Prints:
#Returns: 1+2
Abs (1 + 2)
#Prints:
#Returns: 3
Abs (1+2)
#Prints:
#Returns: 3
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1448 次 |
| 最近记录: |