當我這樣做,如何 '字符串#GSUB {}'(帶座)工作?
> "fooo".gsub("o") {puts "Found an 'o'"}
Found an 'o'
Found an 'o'
Found an 'o'
=> "f"
gsub
刪除所有'o'
秒。這個怎麼用?
我覺得gsub
通行證每一個字符來將擋,但由於塊無爲人物本身的(像抓住了它),它被丟棄。
我覺得這個情況是因爲,當我做
> "fooo".gsub("o"){|ch| ch.upcase}
=> "fOOO"
塊被捕捉的性格和把它變成大寫。 但是,當我這樣做,
> "fooo".gsub("o", "u"){|ch| ch.upcase}
=> "fuuu"
如何處理紅寶石在這種情況下,該塊?
我發現,使用Ruby的插頭yield
塊進入的方法。 (檢查this),但我現在還不能確定我的第一個代碼示例和第三個例子說明。任何人都可以提供更多的信息嗎?
'gsub'確實應該打印一個警告。 – Stefan
@Stefan爲什麼應該這樣?任何方法都可以接受一個塊,如果每個方法都打印此警告? – engineersmnky
@engineersmnky如果塊參數是方法的公共API的一部分,是的。就像'[]的.index(1){}'或'[] .fetch(1,0){}' – Stefan