Proc#==
được đánh giá như thế nào? RDoc nói:`ProC# == 'được đánh giá như thế nào?
prc == other_proc → true hoặc false
trả về true nếu prc là cùng một đối tượng như other_proc, hoặc nếu họ đều procs với cùng một cơ thể.
Nhưng không rõ điều gì được tính là có "cùng một nội dung". Một điều kiện có vẻ là sự tinh thần phải giống nhau:
->{} == ->{} # => true
->{} == ->x{} # => false
->x{} == ->x{} # => true
->x{} == ->y{} # => true
->x{} == ->y,z{} # => false
Nhưng còn nhiều hơn thế. Như rdoc nói, cơ thể quan trọng:
->{nil} == ->{nil} # => true
->{nil} == ->{false} # => false
->{false} == ->{false} # => true
Nhưng cùng một lúc, có vẻ như các proc không được đánh giá đầy đủ:
->{} == ->{nil} # => false
->{false} == ->{1 == 2} # => false
ở mức độ nào là cơ quan thẩm định?
Tôi tưởng tượng mã trong cơ thể phải giống nhau, không phải kết quả của việc đánh giá. –
Tôi đã nghĩ cây phân tích cú pháp phải giống hệt nhau, nhưng ... '-> {nil} == -> {nil; nil} # => true' Hoặc có lẽ nil đầu tiên bị tước hình thành cây nguồn vì nó không có tác dụng hay ý nghĩa gì? –
Ngoài ra: 'a, b = -> {}, -> {}; a == b # => true', nhưng 'a = -> {} [newline] b = -> {}; a == b # => sai'. Lưu ý dòng mới PHẢI là một dòng mới; nếu bạn sử dụng dấu chấm phẩy, 'a' bằng' b'. WTF thực sự. –