0
Chris Pine의 'Learn to Program'의 Ch.11에서 일하고 있습니다. 이 연습에서는 모든 폴더에서 몇 곡을 무작위로 선택해야하는 재생 목록을 만들어야합니다. 내 프로그램의 문자열이 텍스트 파일에 저장되지 않습니다.
folder = Dir['/Users/M/Music/iTunes/iTunes Media/Music/**']
music_folders= []
folder.each do |f|
f = f.split ('/')
music_folders.push f[7]
end
def mix arr
arr.each do |aa|
songs = Dir["/Users/M/Music/iTunes/iTunes Media/Music/#{aa}/**/*.{MP3,mp3}"]
shuffle(songs)
end
end
def shuffle songs
playlist=[]
x = 0
y = 0
count = songs.length
while y<4
x = rand(count)
if songs[x] !='used'
playlist.push songs[x]
songs[x] = 'used'
y= y+1
end
end
puts playlist
end
mix(music_folders)
그래서 명령 출력 내가 원하는 정확히 뭔지를 제공하지만 난 그들에게 .txt 파일로 저장해야하는 방법을 잘 모르겠습니다 : 여기에 내가 쓴 것입니다. 아무도 이걸 도와 줄 수 있니? 감사!! 정확히 파일에 쓸 당신이 원하는 무엇을
에 기록? 전체 music_folders 배열, 재생 목록 또는 개별 항목? – SeanNieuwoudt
출력의 종류가 어떤 것인지 궁금합니다. 'p','puts '또는 화면에 인쇄하는 다른 방법은 없습니다. 'while'은'nil'을 리턴하므로'shuffle'도'nil'을 리턴합니다. 'mix' 메쏘드의'arr.each'는 원래의 배열을 반환하므로'mix'는 같은 것을 반환합니다 ('arr'). 결국, 당신의'mix (music_folder)'는 원래의 배열을 리턴해야합니다. 이 배열에는 경로가 길면 경로가 짧을 때'nil's가 포함될 수 있습니다 (경로가 짧음). 글쎄, 나는 그것을 f.last로 바꿨다. 추신. 이 메소드를 체크해야한다 :'File.file?','[] .inject','File.open' 또는'File.write'. 마지막 두 가지 방법은 글쓰기를위한 것입니다. –
Opps! 실수로 중요한 라인 하나를 삭제했습니다. 나는 그것을 다시 추가했다. 나는 File.open + File을 사용했다. 쓰다! 그것은 명령 출력에 재생 목록을 인쇄하고 파일을 만들지 만 파일이 비어 있습니다 ... –