def starts_with_consonant?(str)
    str.empty? || str.class != String ||  /\A[^aeiou]/i=~str
end
p starts_with_consonant? "Apple" #=>nil
p starts_with_consonant? "microsoft"#=> 0

我希望它返回true或false,但返回nil和0。

===============>>#1 票数:1 已采纳

这是因为在匹配的情况下,最后一个表达式中的Regex测试返回nil或0。 您需要将比赛强制为布尔值

def starts_with_consonant?(str)
   str.empty? || str.class != String ||  (/\A[^aeiou]/i=~str != nil)
end

===============>>#2 票数:0

在Ruby中,除了nilfalse之外,每个对象都被视为true(truthy)。 其中包括0:

puts '0 is true' if 0
0 is true

出于所有目的和目的,您的代码已返回false和true,它将与if或boolean运算符(如&&||一起正常使用 只有直接比较才会显示出差异:

starts_with_consonant? "Apple" == false
=> false

但是,Ruby中的任何东西都不需要进行这种比较,并且通常被认为是不好的风格。 只需使用ifunless

if starts_with_consonant? "Apple"
  #...
end

unless starts_with_consonant? "Apple"
  #...
end

  ask by user2634156 translate from so

未解决问题?本站智能推荐:

2回复

Ruby类型错误

我正在尝试用另一个文件中的值替换大型(4.6GB)csv文件中的列。 例如: | id | 名称| | 01 | 约翰 | id | 地址| 电话| | 01 | 地方 数 我想要的是将底表中的01替换为“ john”。 问题是我不断收
1回复

ruby oauth2 put请求返回无效的块类型错误

我能够很好地执行获取和发布请求,但是当我尝试以相同格式执行放置请求时,我得到:Zlib :: DataError(无效的块类型) 这是回溯 这是设置代码 我使用的是oauth2版本0.9.3,如果我执行请求的方式有问题,则错误日志中没有显示。 如果需要更多信息,请告诉我。
1回复

Ruby GraphQL返回不同的类型

我正在尝试从使用Rails REST API迁移到使用GraphQL。 我们尝试替换的REST端点之一使用了序列化器。 在该序列化程序中,我们将根据字符串是“ true”还是“ false”返回字符串或布尔值。 我在创建可以处理此问题的graphql对象时遇到了麻烦。 我尝试创建自定义类
3回复

Ruby替代void返回类型

我的经验是基于C语言(C,C ++,Java,C#),其中函数的返回类型可以是无效的,即没有返回。 但在Ruby中,似乎每个函数都返回一些东西。 我想知道在Ruby中返回什么方法不会返回Java或C ++中的任何内容。 我最好的猜测是nil或包含方法的对象(用于链接)或者只是忽略最后发生的
1回复

Ruby SQLite错误的参数类型

代码@db = SQLite3::Database.new 'db.db'与ruby-1.9.3-p194完美配合,并返回ruby-2.0.0-p353(rvm 1.24.7)错误: 我无法搜索任何解决方案。 UPD :irb没有错误。 只有我自己的代码: 它在日志中生成
1回复

Ruby-Rails-类型错误

类型错误是什么意思? 我正在使用SELECT语句从表中读取一个值,并使用该值传递给方法。 TypeError(无法将Symbol转换为Integer):我尝试a , a[:value] , a[:value].to_s 。 都没有用。
1回复

Ruby类型类不匹配错误

平台:Ubuntu 12.10 在我的终端中,我试图运行bundle exec rspec spec/models/user_spec.rb 我正在遵循Michael Hartl的“学习Web开发:Ruby on Rails”教程来测试用户。 我的代码如下: 我的错误如
4回复

Ruby中意外的返回错误

我刚开始学习Ruby,并且在嵌套结构方面遇到了一些麻烦。 我想做的是如果:first的值为“ John”,则返回:last name(“ Doe”): 但是,控制台给我这个错误: 当我在控制台中对此进行测试并将“ return”替换为“ puts”时,它使我返回“ Doe”
1回复

Ruby哈希返回错误值

我在ruby中具有以下功能,用于从数据库中检索某些信息。 此代码利用了它: 我得到的问题是,在第二个代码块中建立连接时,即使我将所有哈希值都从哈希表中复制到了该函数中,该函数也会尝试使用值{"nodeid"=>xxxxx}连接节点。第一个代码块中的一个数组,供第二个块处理。
2回复

Ruby on Rails,返回0而不是错误

我正在构建Ruby on Rails应用程序,经常遇到以下错误: 当我进行一些计算或查询时,例如字符串或其他变量类型: 我想我理解问题所在,但是您是否知道是否有一种简单的方法可以返回0而不是类似的错误,因为这种情况可能是理发师当前没有接受的约会。 一种解决方案是在进行计算之