Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
递归、混合数组、Ruby_Ruby_Arrays_Recursion - Fatal编程技术网

递归、混合数组、Ruby

递归、混合数组、Ruby,ruby,arrays,recursion,Ruby,Arrays,Recursion,我有一个递归问题,它没有像我期望的那样返回,我不确定如何更改函数 我想要一个数组,其中既包含字符串,也包含从文本块派生的数组,该文本块由文本中定义的边界分隔。第一个过程可以工作,但第二个过程似乎无法正确地将包含boundary关键字的字符串转换为数组,并让它们在父数组中替换自己 递归函数: def separate(text,boundary = nil) # returns array of strings and arrays containing all of the parts

我有一个递归问题,它没有像我期望的那样返回,我不确定如何更改函数

我想要一个数组,其中既包含字符串,也包含从文本块派生的数组,该文本块由文本中定义的边界分隔。第一个过程可以工作,但第二个过程似乎无法正确地将包含boundary关键字的字符串转换为数组,并让它们在父数组中替换自己

递归函数:

def separate(text,boundary = nil)
    # returns array of strings and arrays containing all of the parts of the email
    textList = []
    if !boundary #look in the email for "boundary= X"
        text.scan(/(?<=boundary=).*/) do |bound|
            textList = recursiveSplit(text,bound)
            end
    end
    if boundary 
        textList = recursiveSplit(text,boundary)
    end
    puts textList.count
    puts '\n'
    puts textList.inspect
    return textList
end


def recursiveSplit(chunk,boundary)
    if chunk.is_a? String
        searchString = "--" + boundary
        ar = chunk.split(searchString)
        return ar
    elsif chunk.is_a? Array
        chunk do |bit|
            recursiveSplit(bit,boundary);
        end
    end
end
def分离(文本,边界=nil)
#返回字符串数组和包含电子邮件所有部分的数组
textList=[]
如果!边界#在电子邮件中查找“boundary=X”

text.scan(/(?这是maildir、mbox还是自定义文件?@BjoernRennhak这是“查看原始文件”时发生的情况)gmail电子邮件。然后将其保存为.txt文件。我已更改了一些可读性和匿名性值。您尝试提取的边界似乎是您在mbox或maildir文件中找到的常用结构。我想知道您是否可以使用适当的库而不是自定义脚本,以确保可维护性并避免重新发明wheel。你为什么不试着在上面使用例如。@BjoernRennhak我非常愿意这样做,不幸的是,这是一个实用的编码,作为入门级工作的途径,他们规定你不允许使用任何特定于电子邮件的库,事实上,你必须重新发明轮子。好吧,你以前没有指定。你为什么不加入使用pry等调试器对此进行调试,只需一步一步地检查程序,看看您做错了什么。因为这是求职面试,所以最好完全了解发生了什么,以便您能够理解。
MIME-Version: 1.0
Received: by 10.112.170.40 with HTTP; Fri, 3 May 2013 05:08:21 -0700 (PDT)
Date: Fri, 3 May 2013 08:08:21 -0400
Delivered-To: me@gmail.com
Message-ID: <CADPp44E47syuXvP1K-aemhcU7vdSijZkfKLu-74QPWs9U9551Q@mail.gmail.com>
Subject: MiB 5/3/13 7:43AM (EST)
From: Me <me@gmail.com>
To: Someone <someone@aol.com>
Content-Type: multipart/mixed; boundary=BNDRY1

--BNDRY1
Content-Type: multipart/alternative; boundary=BNDRY2

--BNDRY2
Content-Type: text/plain; charset=ISO-8859-1

-TEXT STUFF HERE. SAYING THINGS
ABOUT CERTAIN THINGS

--BNDRY2
Content-Type: text/html; charset=ISO-8859-1

HTML FORMATTED TEXT STUFF

--BNDRY2--
--BNDRY1
Content-Type: application/zip; name="Make it Brief.ipa.zip"
Content-Disposition: attachment; filename="Make it Brief.ipa.zip"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_hg9biuno0

<<FILE DATA>>
--BNDRY1--