在JavaScript下面的習慣有時被用來容納範圍如何在Ruby中編寫內聯塊以包含局部變量作用域?
// JavaScript
(function() {
var x = 0;
// do stuff
})(); // execute anonymous function in-place
// x is undefined (or its previous value)
你瞧,這在Perl:
{
local $/ = undef;
$file_contents = <FILE>;
}
# $/ == "\n"
是否有紅寶石相似的地方?我能想出最接近的是:
Proc.new
x = 123
puts x
end.call
# x is undefined
有另一種,在Ruby中要做到這一點比較常見的方式,或者這是它是如何做得最好?
您提出的方法似乎是最簡單的解決方案。出於好奇,你的用途是什麼?在JavaScript中,我可以看到它有助於防止客戶端操縱全局變量,或者在包含各種腳本文件時防止與其他全局變量發生衝突,但這些在Ruby中沒有問題。 –
用例不重要或永久。我對Ruby比較陌生,發現自己編寫臨時腳本來嘗試解決問題的幾種方法。在劇本中,我想在每次嘗試幾件事時保持每個「試驗塊」的範圍隔離。我最初嘗試了一個光禿禿的「do ... end」塊,這不起作用,有些令我驚訝。 – Steve
我只會創建幾個方法,其中每個方法都會保留其本地變量。 –