ruby - 在 Ruby 中将空字符串转换为 nil

标签 ruby boolean string

我有一个名为 word 的字符串和一个名为 infinitive 的函数,这样
word.infinitive 在某些情况下会返回另一个字符串,否则会返回一个空字符串
我正在尝试为下面的代码片段找到一个优雅的 ruby​​ 单行表达式

if word.infinitive == ""
      return word
else return word.infinitive

如果不定式返回 nil 而不是 "",我可以做类似的事情

(word.infinitive or word)

但既然没有,我就不能利用短路OR
理想情况下我想要
1) 我可以轻松嵌入其他代码的单个表达式
2) 函数不定式只被调用一次
3) 不要在我的代码中添加任何自定义 gem 或插件

最佳答案

ActiveSupport presence方法将空(或 blank?)字符串转换为 nil。它专为您的确切用例而设计:

word.infinitive.presence || word

请注意,您可以在 rails 之外轻松使用 ActiveSupport:

require 'active_support/core_ext/object/blank'

关于ruby - 在 Ruby 中将空字符串转换为 nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/647370/

相关文章:

c++ - 为什么这些完全相似的代码不起作用?

java - 如何检查遍历是否已达到 Java 二维数组中的某个索引?

javascript - 如何在 JavaScript 中设置默认 boolean 值?

regex - R:使用 POSIX 正则表达式从字符串中提取数据

哈希上的 Ruby case 语句?

ruby - 在 OS X 10.7 上使用 RVM fork 循环安装 Ruby 1.9.3

c - printf 忽略单个反斜杠 '\'

c# - 如何仅获取整数并删除 C# 中的所有字符串

html - CSS 属性未出现在电子邮件中

ruby - 如何向 Enumerable 模块添加方法?