nil:NilClass 错误的未定义方法“<”但不存在 nil?
undefined method `<' for nil:NilClass error but no nil exists?
想知道为什么我在编译时收到错误:“undefined method `<' for nil:NilClass”。在查找原因后,我发现您不能在值为 nil 的对象上使用 []。这是有道理的,但我不明白为什么我的数组中会包含 nil 。我错过了什么?
def binary_search(n, arr)
middle = arr.length #pick middle value
i = 0
j = arr.length - 1
while i <= j
if arr[middle] == n
return true
elsif arr[middle] < n
i = middle + 1
middle = (i + j) / 2
else
j = middle - 1
middle = (i + j) / 2
end
end
false
end
nums = [76,32,50,90,10,8,15,49]
nums.sort
puts nums.inspect
binary_search(50, nums)
让我们看一下代码的简化子集:
arr = [76,32,50,90,10,8,15,49]
middle = arr.length # 8
arr[middle] < 50 # NoMethodError
length
是8.
arr[8]
是 nil
,因为索引 8 处没有项目。请记住 Ruby 索引以 0 开头。
nil < 50
是一个 NoMethodError
想知道为什么我在编译时收到错误:“undefined method `<' for nil:NilClass”。在查找原因后,我发现您不能在值为 nil 的对象上使用 []。这是有道理的,但我不明白为什么我的数组中会包含 nil 。我错过了什么?
def binary_search(n, arr)
middle = arr.length #pick middle value
i = 0
j = arr.length - 1
while i <= j
if arr[middle] == n
return true
elsif arr[middle] < n
i = middle + 1
middle = (i + j) / 2
else
j = middle - 1
middle = (i + j) / 2
end
end
false
end
nums = [76,32,50,90,10,8,15,49]
nums.sort
puts nums.inspect
binary_search(50, nums)
让我们看一下代码的简化子集:
arr = [76,32,50,90,10,8,15,49]
middle = arr.length # 8
arr[middle] < 50 # NoMethodError
length
是8.arr[8]
是nil
,因为索引 8 处没有项目。请记住 Ruby 索引以 0 开头。nil < 50
是一个NoMethodError