2010-12-16 49 views
1
parse_emails('long list') 


def parse_emails(emails) 
    .... stuff 
    return valid_emails, invalid_emails 
end 

我看到有兩個數組,但我如何得到它們?我試過:Rails有2個返回值的方法 - 如何獲取它們?

mylist = parse_emails('long list') 
mylist[valid_emails] 

但是那個錯誤。想法? thxs

+1

MYLIST [ 0],mylist [1]? – 2010-12-16 17:34:30

+0

是做到這一點的正確方法嗎?看起來像這樣會對後面的問題感到困惑 – AnApprentice 2010-12-16 17:35:14

回答

7

valid_emails, invalid_emails = parse_emails(whatever)

請花時間閱讀一些基本的介紹到Ruby的語法;)

+0

這種列表擴展來自Perl,可能會讓不熟悉列表賦值細節的人感到困惑。它可能是最不理解的語法元素之一。 – tadman 2010-12-16 21:01:28

+0

這被稱爲'元組'。在它們周圍添加parens使事情變得更加明顯:包含兩個值的單個對象返回並分配給另一個帶有兩個插座的對象。 '(a,b)= foo()' – 9000 2010-12-16 23:15:20

+0

確定這很酷,但實際上並沒有工作 – AnApprentice 2010-12-17 00:45:20

1

構造一個包含兩個列表的類,一個用於有效的電子郵件,另一個用於無效的電子郵件,並在parse_emails函數中填充此類的對象並將其返回。

然後,在外面,您可以訪問這兩個列表作爲返回值的屬性。

+0

注意顯示一個例子,這對我來說是新的 – AnApprentice 2010-12-16 17:39:34

0

你可以在兩個數組傳遞給方法,然後填充他們在那裏:

invalid_emails = [] 
valid_emails = [] 
parse_emails('long list', valid_emails, invalid_emails) 


def parse_emails(emails, valid, invalid) 
    .... stuff 
    while ... 
    if is_valid? 
     valid << current_email 
    else 
     invalid << current_email 
    end 
    end 
end 
相關問題