2010-10-01 30 views

Trả lời

8
for f in @a 
    puts f 
end 

chúng ta có thể viết

puts @a.join("\n") 

Trong trường hợp tổng quát, khi bạn muốn làm điều gì đó với một vài mảng, bạn có thể đặt các mảng vào một mảng và sau đó sử dụng each ví dụ:

[@a, @b].each do |list| 
    list.each { |value| puts value } 
end 

và một khi bạn bắt đầu làm việc gì đó phức tạp hơn chỉ cần in ra giá trị, hãy sử dụng phương pháp trích xuất phương pháp trích xuất hoạt động bạn đang thực hiện, ví dụ:

[@a, @b].each do |list| 
    do_something_with list 
end 

Cuối cùng, nếu bạn cần để giữ cho nhãn mô tả ("Tất cả Như" vv), bạn có thể sử dụng một hash:

{'As' => @a, 'Bs' => @b}.each_pair do |label, values| 
    puts "All #{label}" 
    puts values.join("\n") 
end 
+0

Nhưng nó sử dụng nhiều bộ nhớ hơn. – Hongli

+0

có cách nào để có ít nhất một nhãn/thẻ nhỏ cho @a và @b được in không? câu hỏi được trả lời trong phần thứ hai của bạn! cảm ơn! – poseid

+0

Nhận xét của Hongli đã được đăng trước khi tôi mở rộng câu trả lời với nhiều đề xuất. Để rõ ràng, anh ta đề cập đến việc sử dụng 'join' để tạo một chuỗi mới chứa tất cả các giá trị. – mikej

0

Chỉ cần đoán ...

def overview 
    puts "All As:" 
    puts_a(@a) 
    puts "\n" 

    puts "All Bs:" 
    puts_a(@b) 
end 

def puts_a(strs) 
    for str in strs 
    puts str 
    end 
end 
1

Tôi muốn làm điều gì đó như thế:

def overview 
    [@a, @b].each do |e| 
     puts e.join("\n") 
    end 
end 
4
def print_all(header, ary) 
    puts header 
    for f in ary 
    puts f 
    end 
end 

def overview 
    print_all("All As:", @a) 
    puts 
    print_all("All Bs:", @b) 
end 
+1

'cho f trong ary; đặt f; kết thúc 'là không cần thiết. Chỉ cần 'đặt ary' sẽ thực hiện công việc. – steenslag

Các vấn đề liên quan