小编Joh*_*ees的帖子

为什么空的PowerShell管道与null不同?

我试图理解@()数组构造函数的行为,我遇到了这个非常奇怪的测试.

似乎空管道的值与$ null"不完全"相同,即使它是-eq $ null

$y = 1,2,3,4 | ? { $_ -ge 5 }
$z = $null

if ($y -eq $null) {'y is null'} else {'y NOT null'}  ### y is null
if ($z -eq $null) {'z is null'} else {'z NOT null'}  ### z is null

$ay = @($y)
$az = @($z)

"ay.length = " + $ay.length  ### ay.length = 0
"az.length = " + $az.length  ### az.length = 1

$az[0].GetType()  ### throws exception because $az[0] is null …
Run Code Online (Sandbox Code Playgroud)

powershell null

7
推荐指数
2
解决办法
1935
查看次数

使用PowerShell快速测试两个文件的内容是否相同

作为更大的 PowerShell 脚本的一部分,我想测试两个二进制文件的内容是否相同。

我认为以下在逻辑上是正确的:

if (@(Compare-Object 
    $(Get-Content f1.txt -encoding byte) 
    $(Get-Content f2.txt -encoding byte) 
    -sync 0).length -eq 0) {
    "same" 
} else {
    "different"
}
Run Code Online (Sandbox Code Playgroud)

但是,上面的运行速度非常慢,因为它实际上是在使用比较对象来实现更简单的实现。

我正在寻找给出相同逻辑结果的东西,但使用一些更快的低级文件比较。

我不需要或不想要任何差异的描述,或任何文本输出,只是一个逻辑测试,给我一个布尔结果。

powershell

6
推荐指数
1
解决办法
6743
查看次数

什么样的ruby方法调用是Array(x)

是什么意思,Ruby文档的语法在哪里:

Array(phrases)
Run Code Online (Sandbox Code Playgroud)

我发现在这里浏览Rails源代码:

# File actionpack/lib/action_view/helpers/text_helper.rb, line 109
...
119:           match = Array(phrases).map { |p| Regexp.escape(p) }.join('|')
Run Code Online (Sandbox Code Playgroud)

我以为Array.new通常会用来创建一个数组,所以必须在这里进行一些不同的事情.从这个代码的上下文BTW,phrases变量可以是字符串或字符串数​​组.

ruby arrays ruby-on-rails

4
推荐指数
1
解决办法
1178
查看次数

强制浏览器忽略HTML 5功能

我有一个遗留网站,可以在FF 3.6,IE 7到8等中正确呈现,但在FF 9中失败.

问题是该站点使用的旧的(HTML 5之前的)第三方JS框架(Woodstock)HIDDEN为某些HTML元素添加了一个属性,所以当我在firebug中查看HTML时,我看到的代码如下:

<table id="foo" hidden="">
Run Code Online (Sandbox Code Playgroud)

这些页面正在提供:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
Run Code Online (Sandbox Code Playgroud)

这适用于为没有HIDDEN属性的HTML 4设计的浏览器.但支持HTML 5的最新浏览器会解释此属性并隐藏我需要显示的元素.

修改(不支持的)第三方框架以避免使用该HIDDEN属性将非常困难.

是否可以强制浏览器呈现页面,就像它们是HTML 4一样,而不是对HTML 5功能进行任何解释?其他建议欢迎......

firefox html5

3
推荐指数
1
解决办法
2027
查看次数

解释从PowerShell闭包调用的函数的范围

以下PowerShell代码显示从闭包调用的函数的意外作用域行为.你能解释一下这是"按设计"还是缺陷?

function runblock($block) {
    $x = 4
    & $block
}

function printx() {
    "  in printx: x=" + $x
}

"PSVersion $($PSVersionTable.PSVersion)"

$x = 1
$b = {"In block x=" + $x ; $x = 3 ; printx}
$x = 2
runblock $b

$x = 1
$b = {"In closure x=" + $x ; $x = 3 ; printx}.GetNewClosure()
$x = 2
runblock $b
Run Code Online (Sandbox Code Playgroud)

以上输出是

PSVersion 3.0
In block x=4
  in printx: x=3
In closure x=1
  in printx: x=4
Run Code Online (Sandbox Code Playgroud)

大部分输出对我有意义: …

powershell closures scriptblock

2
推荐指数
1
解决办法
508
查看次数