2012-02-08 3 views
3

사용 된 YAML 라이브러리에 따라 YAML 파일의 목록 (해시가 아님)이 Ruby 배열로 변환 될 때 순서가 보장되지 않는다고 들었습니다. 그러나, 나는 이것에 대한 어떠한 증거도 찾을 수 없었다. 그래서 같은 YAML 파일 제공 : YAML::load File.read('filename')를 수행 한 후YAML 파일에서로드 된 Ruby 배열의 순서가 유지 되나요?

letters: 
- a 
- b 
- c 
- d 
- e 

을, 나는 항상 관계없이 YAML 내가 사용하고 도서관, 수정의, 대신 다른 순서로, {'letters'=>['a', 'b', 'c', 'd', 'e']}를 얻을 보장있어?

+1

나는 들어 본 적이 없다. 목록과 배열은 본질적으로 순서가 지정됩니다. –

답변

2

예, 순서가 보장됩니다. 정렬되지 않은 매핑의 spec 토론에서 : 노드 순서가 중요하다 모든 경우에

, 시퀀스를 사용해야합니다.

1

Ruby YAML 구현 에 대해서는 말할 수 없지만 "목록"은 정의상 "값의 정렬 된 컬렉션"입니다.

그리고 YAML 목록은 실제로 이런 방식으로 정의됩니다.

letters: 
- a 
- b 
- c 
- d 
- e 

빠른 테스트;

require 'yaml' 

results = Array.new(1_000) do 
    YAML.load("letters:\n- a\n- b\n- c\n- d\n- e") 
end 

puts results.uniq 

항상 주문된다는 것은 매우 안전합니다!