Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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
Arrays Ruby中是否有一个数组方法用于;必须至少包括其中一项,但可以';“不包括其他任何东西吗?”;?_Arrays_Ruby - Fatal编程技术网

Arrays Ruby中是否有一个数组方法用于;必须至少包括其中一项,但可以';“不包括其他任何东西吗?”;?

Arrays Ruby中是否有一个数组方法用于;必须至少包括其中一项,但可以';“不包括其他任何东西吗?”;?,arrays,ruby,Arrays,Ruby,我在做一个输入是数组的练习。如果数组包含除字符串“n”、“s”、“e”和“w”以外的任何内容,或者如果数组不包含任何字符串“n”、“s”、“e”和“w”,则需要返回false。是否有一个预定义的方法 如果没有,怎么做呢?我认为没有内置的方法可以使用。如果arr是您的数组,则可以执行以下操作 directions = ['n', 's', 'e', 'w'] arr.any? && (arr-directions).empty? 一些例子: arr = ['n', 's', '

我在做一个输入是数组的练习。如果数组包含除字符串“n”、“s”、“e”和“w”以外的任何内容,或者如果数组不包含任何字符串“n”、“s”、“e”和“w”,则需要返回
false
。是否有一个预定义的方法


如果没有,怎么做呢?

我认为没有内置的方法可以使用。如果
arr
是您的数组,则可以执行以下操作

directions = ['n', 's', 'e', 'w']

arr.any? && (arr-directions).empty?
一些例子:

arr = ['n', 's', 'n']
arr.any? && (arr-directions).empty?
  #=> true

arr = ['n', 's', 'f']
arr.any? && (arr-directions).empty?
    #=> false

arr = ['f', 'g']
arr.any? && (arr-directions).empty?
  #=> false

arr = []
arr.any? && (arr-directions).empty?
  #=> false

据我所知,没有任何内置函数。您可以执行以下操作或在阵列上尝试该方法

array.each do |element|
  if element != 'n' && element != 's' && element != 'e' && element != 'w'
    return false
  end
end

return true
这应该遍历数组的每个元素,并将每个元素与“n”、“s”、“e”和“w”进行比较。如果发现不匹配的内容,则返回false。如果它一路通过而没有发现任何异常,它将返回true。您可能还需要在开头检查空字符串。

您可以使用和与regex一起使用:

def news? arr
  r = /[news]/
  !arr.grep(r).empty? && arr.grep_v(r).empty?
end
使用Cary的测试(尽管略有修改):


这似乎是最简单的答案,谢谢。我最终使用了SYoung82的答案,只是因为我已经有了一个包含“if”语句的块,并添加了它。这不聪明吗?我对ruby很陌生,我不能说这是否明智。一些Rubiest会进行最小的更改以使其代码正常工作;其他人,如果他们想到一个更好的方法来做某事,就会撕掉他们所有的旧代码。这也可能取决于时间压力。我从来没有使用过grep或grep_v,我必须记住它们thanks@ichi_the_killer请记住,目前为止,对于空数组
[]
,此解决方案将返回
true
news? ['n', 's', 'n'] #=> true
news? ['n', 's', 'f'] #=> false
news? ['f', 'g', 'h'] #=> false
news? []              #=> false