假设我有一个数组:
newArray = Array.[]
然后我推了一些字符串:
newArray.push 'nil'
newArray.push 'nil2'
newArray.push 'nil3'
现在我做一个while循环:
while true
load = gets.chomp
if newArray[].include? load
puts 'That pieace of the Array is loaded'
break
end
end
部分if newArray[].include? load
错了,我知道。但是我怎么能这样做才能起作用呢?
答案 0 :(得分:3)
您的问题令人困惑,您的代码不是惯用的Ruby。考虑写它:
new_array = []
new_array << 'nil'
new_array << 'nil2'
new_array << 'nil3'
loop do
load = gets.chomp
if new_array.include? load
puts 'That piece of the Array is loaded'
break
end
end
Array.new
或Array.[]
,但我们很少这样做。我们通常会将[]
分配给变量。push
<<
到数组。它的输入时间更短,并在视觉上区分发生的事情。loop do
代替while true
。在定义该数组时,我实际上更直接:
new_array = %w[nil nil2 nil3]
我会使用更多的助记符变量名,因此代码更自我记录:
ary = %w[nil nil2 nil3]
loop do
user_input = gets.chomp
if ary.include? user_input
puts 'That piece of the Array is loaded'
break
end
end
如果要查看输入的值是否是数组中字符串元素的一部分:
if ary.any? { |s| s[user_input] }
puts 'That piece of the Array is loaded'
break
end
如果要查看输入的值是否是数组中字符串元素的最后一个字符:
if ary.any? { |s| s[-1] == user_input }
或:
if ary.any? { |s| s[/#{ user_input }$/] }
阅读the documentation for any?
以了解它正在做什么。