ruby - 具有相同开头和结尾的范围的默认行为是什么?

标签 ruby

我创建了一个方法,它在 (1...array.length) 范围内运行一个循环。输出总是正确的,长度大于 1,但每当我只有一个字符数组 i.e ['a'] 时,输出仍然正确。这让我担心的原因是因为我不确定程序如何知道不索引 nil 数组对象...arr[1] 在长度为 1 的情况下。

def vowels_in_order?(word)  
  vowels = word.scan(/[aeiou]/)
  (1...vowels.length).each { |index| return false if vowels[index] < vowels[index-1]}
  return true
end 

因此我想知道范围是否有默认行为,不会导致循环崩溃。或者可能,这是否与我的方法有关,因为那也很有见地。

这是一个循环在技术上应该如何崩溃的例子:

2.1.0 :1116 > word = "a"
 => "a" 
2.1.0 :1117 > word[1] < word[0]
NoMethodError: undefined method `<' for nil:NilClass
    from (irb#1):1117

最佳答案

(1...1)(1...0) 都是空的(不包含任何元素),所以调用 each 对它们没有任何作用。

关于ruby - 具有相同开头和结尾的范围的默认行为是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21239461/

相关文章:

ruby - 使用 ruby​​zip 将文件和嵌套目录添加到 zipoutputstream

ruby - 如何在 Ubuntu 上安装 PostgreSQL 的 pg gem?

json - 处理 JSON 返回的空值

arrays - 如何分离重复的数组?

ruby-on-rails - 如何为 Controller 和 View 对象设置 routes.rb?

ruby - 什么不能从 ruby​​ 中的对象访问类变量?

ruby - 使用 charlock_holmes gem 的 undefined symbol

ruby-on-rails - 跳过 :touch associations when saving an ActiveRecord object

ruby - 仅在存在时包含 Jekyll 模板

ruby-on-rails - 为什么 'haml --check' 找不到这个明显的语法错误