1. 使用else ifelsif安全吗?
  2. 使用elsif是否更好,因为它遵循Ruby的输入
  3. 或者这是一种偏好?

这是一段取自一本书的代码.我额外添加了end个关键词,并用else if个关键词替换了elsif个关键词.

def describe(inhabitant)
  if inhabitant == "sophie"
    puts 'gender: female'
    puts 'height: 145'
  else if inhabitant == "paul"
    puts 'gender: male'
    puts 'height: 145'
  else if inhabitant == "dawn"
    puts 'gender: female'
    puts 'height: 170'
  else if inhabitant == "brian"
    puts 'gender: male'
    puts 'height: 180'
  else if 
    puts 'species: Trachemys scripta elegans'
    puts 'height: 6'
  end
  end 
  end   
  end
  end
end

这让我意识到else if是多么丑陋.

推荐答案

你可以用else if,而且很安全.但是请注意,这意味着需要额外的end个关键字.

if n == 1
  puts "foo"
elsif n == 2
  puts "bar"
end

逻辑上与:

if n == 1
  puts "foo"
else if n == 2
       puts "bar"
     end
end

或同等标准:

if n == 1
  puts "foo"
else 
  if n == 2
    puts "bar"
  end
end

Ruby相关问答推荐

使用Mac命令行解密用Ruby加密的Zip

有没有办法保存 ruby​​ 代码的执行,以便稍后使用逐步重播对其进行调试?

当数据包含换行符时,Ruby PKCS7 无法验证

Ruby 中的 Hash[key] 返回 nil 但 hash 没有 nil 值

如何在 Ruby 的 RestClient gem 中设置超时?

方法如何在 Ruby 中使用哈希参数?

Ruby:如何计算相对于另一个路径的路径?

Ruby:如何卸载设计(uninstall Devise)?

如何将参数传递给 array.map 快捷方式?

CSV.read 第 x 行的非法引用

在 Ruby 中,有没有办法使用 hash.each_with_index do |[k,v], i| 之类的东西?

使用 for each 时识别最后一个循环

将哈希转换为 struct

Javascript 是否有类似 Ruby 的 method_missing 功能?

如何在课堂上使用 Enumerable mixin?

如何在 Ruby 中取消定义类?

使用 RSpec 判断某物是否是另一个对象的实例

如何理解 class_eval() 和 instance_eval() 的区别?

Ruby 中的动态方法调用

如何解决/usr/bin/env: ruby​​_executable_hooks: No such file or directory?