2010-11-09 46 views
5

vì biểu tượng không phản hồi phương thức < => được sử dụng theo sắp xếp, có ai có kỹ thuật sắp xếp một mảng biểu tượng không? quan tâm đến việc thấy một số ý tưởng khác.ruby: sắp xếp mảng biểu tượng

+1

Bạn nên nhớ rằng Biểu tượng không phải là một chuỗi, mà là một số có tên khá. Tôi hiểu câu hỏi của bạn như thế nào để sắp xếp biểu tượng của 'object_id' – guns

+1

Tôi không thể nói chắc chắn, nhưng nếu bạn đang sắp xếp các biểu tượng theo thứ tự bảng chữ cái, bạn có thể đang làm điều gì sai. –

Trả lời

16

Vâng, symbols.sort_by {|sym| sym.to_s} hoạt động.

Cũng có trong 1,9 ký hiệu do trả lời <=>, vì vậy bạn chỉ có thể thực hiện symbols.sort.

+3

Và trên 1.8.7, 'symbols.sort_by &: to_s' – guns

+0

@guns: Sử dụng Symbol # to_proc để sắp xếp biểu tượng? Đó là phải mỉa mai! –

5

Nếu bạn muốn làm việc trên hồng ngọc trai như thể chúng là 1.9 bạn chỉ có thể xác định < => trên Symbol

class Symbol 
    include Comparable 

    def <=>(other) 
    self.to_s <=> other.to_s 
    end 
end 
+0

Câu trả lời tuyệt vời này thật tuyệt vời. –

2

Bạn có thể sử dụng backports đá quý:

require 'rubygems' 
require 'backports/1.9.1/symbol/comparison' 
[:a, :d, :c, :b].sort 
# => [:a, :b, :c, :d] 
Các vấn đề liên quan