Her şeyden önce: .sayyok DEĞİL aramaları, çünkü size kimlik değer vermek .gistverilen ifadeye yöntemi. Kimlik değeri için .WHICHyöntemi çağırmanız gerekir . Neyse ki, Block.gistyöntem yapar kendi stringification kimlik değerini içerir. Ancak tüm nesneler için durum böyle değildir .
Orada gördüğünüz, işte statik optimize edici: çünkü blok içinde hiçbir şey olmuyor, atılabilir. O farklı bir durumda (eğer alternatif bir imza belirtilen yerde), bu ise farklı. Eğer bu komut dosyasını çalıştırırsanız --optimize=0veya --optimize=1daha sonra tüm bloklar olacak farklı kimlik değerleri vardır.
Bahsetmenin &?BLOCKstatik optimizer'ın kapsamı düzleştirmesini engellemediği bir sorun diyebilirsiniz . Öte yandan, buna DIHWIDT (Doktor, Bunu Yaptığımda Acıyor) vakası da diyebilirsiniz. O zaman yapma o zaman :-)
GÜNCELLEME: Farkı yaratan farklı imzadır. Daniel Mita ++