【发布时间】:2015-11-09 14:36:29
【问题描述】:
我想指出,我已经非常广泛地尝试找到解决方案,我得到的最接近的是this。但是我看不出如何使用map 来解决我的问题。我是 Ruby 的新手,所以请记住这一点。
这是我正在使用的一些代码(简化版):
def base_word input
input_char_array = input.split('') # split string to array of chars
@file.split("\n").each do |dict_word|
input_text = input_char_array
dict_word.split('').each do |char|
if input_text.include? char.downcase
input_text.slice!(input_text.index(char))
end
end
end
end
我需要在每个循环之后将input_text 的值重置回input_char_array 的原始值,但是根据我收集到的信息,因为 Ruby 是基于引用的,我对input_text.slice!(input_text.index(char)) 行所做的修改得到了反映回到原始参考中,结果我很快将input_text 分配给了一个空数组。
如何缓解这种情况?如前所述,我尝试使用.map,但也许我还没有完全理解我应该如何去做。
【问题讨论】:
-
您期望输出什么?您正在对文本进行切片,但它看起来并没有在任何地方打印或返回。
-
#map不会解决您问题中的问题,但它可以帮助输出。当您包含有关预期输出的一些信息时,我将使用#map更新我的答案。 -
我没有包含任何内容的原因是因为我真的不相信它是相关的——我的意思是对
input text进行任何形式的修改都会导致 @ 的原始值987654332@ 也被更改,因此否定了我在“重置”input-text中试图实现的目标