我想知道为什么在以下情况下Ruby为什么用不同的方式表示我的返回值。我正在向函数发送方程列表,并立即按原样返回它。如果直接打印,≡将显示为其Unicode序列。如果我索引结果,它将再次显示为≡。在测试Unicode序列是否等于when时,我得到"Extracting [$filePath]..."
& $7ZipPath "x" $filePath "-o$extractionPath" "-aos" "-bsp1" | out-string -stream | Select-String -Pattern "\d{1,3}%" -AllMatches | ForEach-Object { $_.Matches.Value } | foreach {
[System.Console]::SetCursorPosition(0, [System.Console]::CursorTop)
Write-Host "Progress:" $_ -NoNewLine
}
,所以我不关心值是否更改。我只想知道为什么它在屏幕上的打印方式不同。
true
输出:
def Explain(equations)
equations
end
equations = ["x≡3(mod4)", "x≡4(mod5)"]
puts "ORIGINAL LIST"
equations.each { |e| puts e }
puts "\n\nRETURNED AS A LIST"
puts Explain(equations).to_s
puts "\n\nRETURNED AND ACCESSED INDIVIDUALLY"
puts Explain(equations)[0]
puts Explain(equations)[1]
答案 0 :(得分:0)
当您在数组上调用to_s时,将发生转换。它将数组中的每个值转换为基于统一ascii的字符串。
答案 1 :(得分:0)
它不是“更改为Unicode表示形式”,而是更改为inspect
表示形式。 puts
对给定的参数调用to_s
以便显示它们,默认情况下Array只是以其“原始”形式显示。
打印单个元素会产生所需的行为,因为这是一个简单的字符串。打印数组本身是有问题的,因为数组将使用.inspect
显示。
尝试一下:
puts equations.join(' ')
将它们与空格结合在一起的地方,一切看起来都很好。
注意:当“检查”字符串时,如果字符串中出现任何非ASCII字符,则使用\u...
表示法。 \n
等事物也是如此。