2012-09-27 42 views
2

我們的沙箱已升級到冬季'13,但我們的生產環境仍舊在舊版本。以下代碼在我們的沙箱上打印「false」,但在生產上打印「true」。我似乎無法在網上找到提及,但它看起來像他們工作不同!Salesforce.com的Winter '13版本更改/中斷Set.contains()方法嗎?

Set<Id> x = new Set<Id>{ 
    '012A0000000qv2wIAA' 
    ,'012A0000000qv2xIAA' 
    ,'012A0000000qv2yIAA' 
    ,'012A0000000qv2zIAA' 
}; 

System.debug(x.contains('012A0000000qv2z')); 

請注意,Set包含18個字符的ID,我們問是否.contains()是一個15個字符的ID。我不介意它以某種方式工作;只是奇怪,它的行爲有所不同。


編輯:只是注意到,如果我明確投的字符串的ID,行爲變得不同環境是一致的:

System.debug(x.contains((Id)('012A0000000qv2z'))); 

所以也許頂點已在新版本中改變了類型提升規則?

+0

你可能會在專門的銷售人員堆棧交換網站更好的反應:http://salesforce.stackexchange.com –

回答

2

我看了一下這個。這是對Apex集合新實現中的類型操作邏輯的無意的改變(新的impl支持用戶定義的類型,hooray!)。我提交了一個bug,我們將在未來的補丁中解決這個問題(我不允許在什麼時候做出承諾)。感謝您指出這個問題並給出這樣一個簡潔的表示。

格雷格·菲

+0

感謝您的答覆! – loneboat