Trước hết: .say
không KHÔNG cung cấp cho bạn những giá trị bản sắc, bởi vì đó gọi là .gist
phương pháp trên biểu thức nhất định. Đối với giá trị danh tính, bạn cần gọi .WHICH
phương thức. May mắn thay, Block.gist
phương thức này bao gồm giá trị nhận dạng trong chuỗi của nó. Nhưng điều đó không được đảm bảo là trường hợp cho tất cả các đối tượng.
Những gì bạn thấy ở đó, là trình tối ưu hóa tĩnh tại nơi làm việc: bởi vì không có gì xảy ra bên trong khối, nó có thể bị loại bỏ. Trong một trường hợp nó là khác nhau (nơi mà bạn chỉ định một chữ ký khác), nó là khác nhau. Nếu bạn chạy tập lệnh này bằng --optimize=0
hoặc --optimize=1
, thì tất cả các khối sẽ có các giá trị nhận dạng khác nhau.
Tôi đoán bạn có thể gọi nó là một vấn đề mà việc đề cập &?BLOCK
không ngăn cản trình tối ưu hóa tĩnh làm phẳng phạm vi. Mặt khác, bạn cũng có thể gọi đây là trường hợp DIHWIDT (Bác sĩ, thật đau lòng khi tôi làm điều này). Vì vậy, đừng làm điều đó sau đó :-)
CẬP NHẬT: chính chữ ký khác nhau đã tạo ra sự khác biệt. Daniel Mita ++