Arrays Ruby中是否有一个数组方法用于;必须至少包括其中一项,但可以';“不包括其他任何东西吗?”;?
我在做一个输入是数组的练习。如果数组包含除字符串“n”、“s”、“e”和“w”以外的任何内容,或者如果数组不包含任何字符串“n”、“s”、“e”和“w”,则需要返回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', '
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