Delete_if在包含字符串和数字的数组上,Refactored

时间:2014-08-29 23:29:36

标签: ruby loops refactoring

我对以下为什么不起作用感到困惑。

def array_mod(source_array, letter_to_delete)
  source_array.delete_if {|x| 
    String===x && x.include?letter_to_delete }
end

基本上我有一个接受数组的函数,出于测试目的,它将同时具有字符串和数字。第二个参数是一个字母。该函数应迭代数组,跳过Fixnum值,delete_if元素是a)字符串,b)包含有问题的字母。我已经创建了这个功能,但我正在尝试重构它以使其更专业。谢谢你们帮助我变得更好!

def array_mod(source_array, letter_to_delete)
  return source_array.delete_if do |x| 
      if x.is_a?(Fixnum) ==true
        next
      else
        x.include?letter_to_delete
      end
  end
end

1 个答案:

答案 0 :(得分:0)

您缺少括号:

def array_mod(source_array, letter_to_delete)
  source_array.delete_if {|x| x.is_a?(String) && x.include?(letter_to_delete) }
end