Hash 기초 • 학생 이름을 입력하면 점수를 알려주기 • data = {} #비어 있는 Hash를 만듦. data = Hash. new와 동일. • File. open(ARGV[0], "r: UTF-8"). each do |line| • name, score = line. chomp. split(", ") #line을 쉼표로 구분 • data[name] = score #data에 name-score라는 key-value 쌍을 추가 • # data[name]은 data Hash에 들어 있는 key name과 연결된 • # value를 반환함. • end • print (data. has_key? ARGV[1] ) ? data[ ARGV[1] ] : "이름이 없습니다. "
파일들 join하기 • • • • joined = Hash. new #join한 결과는 { key => [각 파일의 나머지 필드들을 요소로 갖는 Array] } ARGV. each do |fn| #사용자가 제공한 파일이름들에 대해 File. open(fn, "r: UTF-8"). each do |line| #파일을 열어 각 라인에 대해 key, residue = line. chomp. split(", ", 2) #쉼표를 구분자로 split하되, 2개로만 구분 joined[key] ||= Array. new #short-circuiting을 이용한 ||= idiom joined[key] << residue #key와 연결된 Array에 residue를 추가함. end joined. sort. each do |key, residues| #joined를 key로 소팅 #residues: 각 파일의 residue들로 이루어진 Array임 print key #key 출력 residues. each do |residue| #residues Array의 각 요소 residue에 대해 print ", ", residue #쉼표와 residue 출력 end print "n" #하나의 key에 대한 value의 출력이 끝나면 줄바꿈문자 출력 end