Zoe Phoenix wrote:
Maybe it would help if I posted the code, I'm not sure I understand...
For example..:
def cityList
c_list = ['Boston', 'Nashville', 'San Francisco', 'Houston', 'Portland',
'Atlanta', 'Chicago', 'Indianapolis', 'Charleston']
bar = '|| '
puts bar + c_list[0..2].join(' pets || ') + (' pets ||')
puts bar + c_list[3..5].join(' pets || ') + (' pets ||')
puts bar + c_list[6..8].join(' pets || ') + (' pets ||')
end
cityList
puts 'File completed. Save as..?'
save_as = gets.chomp
File::open('c:\rubyfiles\citylist-' + save_as + '.txt', 'w') do |f|
***********
I need it to take the output of that method that I created and write it
to a file... I'm not sure I understand how to do that with the example
you gave. Since I know the code that I had after "File::open", etc. was
wrong, I just left it out.
If it is allowed, I'll add some Ruby idioms (you'll find these often,
and will find them useful, I hope).
I saved your file as "saving.rb", and it now produces the following:
File completed. Save as..?
temp #that's the name I saved the file as
C:\temp>less c:\rubyfiles\citylist-temp.txt # This is how the file looks.
Boston pets || Nashville pets || San Francisco pets ||
Houston pets || Portland pets || Atlanta pets ||
Chicago pets || Indianapolis pets || Charleston pets ||
This is the reworked script:
def cityList
~ c_list = [
~ 'Boston',
~ 'Nashville',
~ 'San Francisco',
~ 'Houston',
~ 'Portland',
~ 'Atlanta',
~ 'Chicago',
~ 'Indianapolis',
~ 'Charleston'
~ ] # I just changed that for readability.
~ bar = '|| ' # I left this, too.
~ temp_array = #This is a temporary array,
#I use to store the results.
~ temp_array.push bar + c_list[0..2].join(' pets || ') + (' pets ||') +
"\n" # This pushes the result of into the Array. It gets stored at the
first index of the Array. You could access it via temp_array[0].
~ temp_array.push bar + c_list[3..5].join(' pets || ') + (' pets ||') +
"\n" #This does something similar, except that it is stored at the next
Array index, temp_array[1]
~ temp_array.push bar + c_list[6..8].join(' pets || ') + (' pets ||') +
"\n" # See above, except this time it is temp_array[2]. Notice that I
added "\n" to your code. This adds a new line. Just delete it, if you
don't want the whole output on a new line, or just leave the last one,
if every iteration shall be on a new line.
end
puts 'File completed. Save as..?'
save_as = gets.chomp
File.open("c:/rubyfiles/citylist-#{save_as}.txt","w") do |f| # Here, I
used string-interpolation, which only works with the double quotes (").
~ f.write cityList #This is a bit complex. f.write takes the result of
cityList, and writes it to a file. In Ruby, every method returns its
last action, so to speak. In this case, it is the Array with all three
lines. Also notice, that you don't have to use File::open, but that
should work, too.
end #ending the block again, and closing the file.
I hope that helps (In case it's not really readable, just copy and paste
the code into your favorite editor).
It would also be nice if I could have the method cycle through 3 items
in the array, then write 3 to a new line, the continue in increments of
3 until it reaches the end of the array. But, I'm not sure if I should
write another topic to ask that or if someone will answer that here.
Let me repeat, to see if I got that correctly:
You want to do cityList three times, and write all of these iterations
into 3 seperate files?
In that case, you could just wrap the File.open[..] part into a loop.
Like 3.times do
File.open[...]
end
Thanks for the help so far, though... I'm pretty new at this.
We all were, at one time.
I hope I can help you out.
In case you haven't found it: Chris Pine's Learn to Program helped me a
lot: pine.fm/LearnToProgram/
And _why's Piognant Guide to Ruby is good, too (although a bit..
strange): http://poignantguide.net/ruby/
- --
Phillip Gawlowski
Twitter: twitter.com/cynicalryan
~ There's never enough time to do all the nothing you want.
-- Calvin