Crystal error: undefined method 'member?' for Array

Crystal error: undefined method 'member?' for Array

我正在尝试将一些 Ruby 代码转换为 Crystal。

我的方法之一是:

def check_and_pop_arg(match : String, args : Array(String))
  result = args.member?(match)
  args.delete_if{|v| v == match}
  return result
end

crystal 编译器不喜欢 Arraymember? 方法。似乎 methods 也是未定义的,我在 crystal.

中找不到 Array class 的 API 文档
  1. 如何检查会员资格?
  2. 是否有我只是找不到的 API 文档的良好来源?

我试过在网上搜索,但即使使用“crystal 报告”,我也得到了太多的误报。

你要找的可能是includes?。 您可以在 API docs, in this case Enumerable.

中找到这些内容
arr = ["a","b","c"]
puts arr.includes? "b"

range1 = (0..10)
puts range1.includes? 6
puts range1.includes? 13

# a possible solution using your code
def check_and_pop_arg(match : String, args : Array(String))
  result = args.includes?(match)
  if result
    args.each_index {|i| if args[i] == match; args.delete_at i end }
  end
  result
end

puts check_and_pop_arg "b", arr
puts arr

输出

% crystal run file.cr
true
true
false
true
["a", "c"]