2010-12-16 92 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