Tôi có thể tạo ra một vài dòng mã mà sẽ làm điều này nhưng tôi tự hỏi nếu có một cách tốt đẹp sạch Rubyesque làm điều này. Trong trường hợp tôi không rõ ràng, những gì tôi đang tìm kiếm là phương thức mảng sẽ trả về true nếu được cho ([3,3,3,3,3]
hoặc ["rabbits","rabbits","rabbits"]
nhưng sẽ trả về false bằng [1,2,3,4,5]
hoặc ["rabbits","rabbits","hares"]
.Làm cách nào để kiểm tra xem tất cả các mục trong một mảng có giống hệt nhau không?
Cảm ơn
Đó là khá thanh lịch. Tôi chỉ có thể sử dụng các .uniq.length == 1 trực tiếp trong mã của tôi chứ không phải là cách bạn đã làm nó (Tôi chỉ sử dụng nó một lần vì vậy tôi giữ nó DRY). Nó sẽ được tốt đẹp nếu có được xây dựng trong .same_values? phương pháp. Tôi không cần phải lo lắng về trường hợp mảng trống trong mã của tôi như a) nó không nên đi lên trong tình hình của tôi và b) nếu nó đã làm tôi sẽ muốn nó trở về sai. Cảm ơn. – brad
Lưu ý rằng 'uniq' sử dụng' hash' và 'eql?' Và không phải '==' có thể hoặc không thể là thứ bạn muốn. –
Tất nhiên, bạn có thể mở rộng chuỗi này lên các mảng lồng nhau với self.flatten.uniq.lenth == 1 –