【问题标题】:Is there any method to convert boolean variable to integer in ruby是否有任何方法可以将布尔变量转换为红宝石中的整数
【发布时间】:2014-12-10 08:43:09
【问题描述】:

我有一个 ruby​​ 变量“is_published”。我想将“is_published”中的值转换为整数。 ruby 中有什么方法可以做到这一点吗?

if is_published == true
  is_published = 1
else
  is_published = 0
end

上面的代码完美运行。如果有任何方法可以在单行代码中执行此操作,请提供帮助。

【问题讨论】:

  • 可能是这样的:is_published = is_published? 1: 0;我不知道ruby的语法,我在js里用这个
  • 您可以使用条件运算符(? :)。 "is_published ? 1 : 0" 是你的答案。
  • is_published = (is_published && 1) || (is_published || 0) 是另一种方式。
  • 等于(is_published && 1) || 0, @CarySwoveland
  • @spickermann,是的,这样更好。我的偏好:is_published ? 1 : 0。也许很无聊,但读起来最好。

标签: ruby-on-rails ruby ruby-on-rails-3.2


【解决方案1】:
class TrueClass; def to_i; 1; end; end
class FalseClass; def to_i; 0; end; end

【讨论】:

  • 埃加德,埃戈尔!这就是我想说的。
  • 这对我来说可能太全球化了 :)
  • 接受这个答案,但我想使用 is_published = (is_published && 1) || (is_published || 0)
  • 我同意@SergioTulentsev。这样做的原因是您正在使用将布尔值存储为 0 和 1 的数据库(例如 MySQL)?如果是这样,那么最好连接到 Rails 的数据库“翻译器”来执行此操作 - 然后它将与 db 无关。
【解决方案2】:
# using logical operators
is_published = is_published && 1 || 0

# using ternary operator
is_published = is_published ? 1 : 0

【讨论】:

    猜你喜欢
    • 2011-11-07
    • 2011-01-11
    • 1970-01-01
    • 2015-12-23
    • 2010-10-19
    • 2017-08-10
    • 2017-04-01
    • 2015-11-11
    • 1970-01-01
    相关资源
    最近更新 更多