Tag: 三元运算符

为什么Ruby三元运算符不允许扩展和类似?

我有两位代码,据我所知,Ruby应该具有相同的function。 两者都在同一初始化方法中: class TicTacToePlayer def initialize(player_type = { human: true }) # Here end end 第一个代码是标准的if / else语句: if player_type[:human] extend Human else extend Joshua end 第二个是上面作为三元运算符: player_type[:human] ? extend Human : extend Joshua … 我希望两者function相同,但第一个运行顺利,第二个返回以下错误: 语法错误,意外的tCONSTANT,期待keyword_do或'{‘或’(’… yer_type [:human]?extend Human:extend Joshua#ternary op … 为什么不同?

不能在Ruby的三元运算符的false部分使用break

以下面的代码为例 : 这个有效 i = 0 flag = false while i < 10 flag = true if flag i+=1 else break end end 但是当转向如此部分进入三元运算符时 i = 0 flag = false while i < 10 flag = true if flag ? i+=1 : break end 我收到这个错误: ternary.rb:5: void value expression ternary.rb:6: syntax error, unexpected end-of-input, expecting […]

干掉Ruby三元组

我经常遇到一种情况,我想做一些条件逻辑,然后返回一部分条件。 如何在不重复真或假表达式中的条件部分的情况下执行此操作? 例如: ClassName.method.blank? ? false : ClassName.method 有没有办法避免重复ClassName.method ? 这是一个现实世界的例子: PROFESSIONAL_ROLES.key(self.professional_role).nil? ? 948460516 : PROFESSIONAL_ROLES.key(self.professional_role)

问号和冒号 – 如果在ruby中

嗨我有关于铁轨上的ruby的问题 显然我有这样的声明: def sort_column Product.column_names.include?(params[:sort]) ? params[:sort] : “name” end 根据我的阅读,据说这种方法基于params [:sort]对列进行排序,如果没有params,产品将按“name”排序。 但是,我不明白这个陈述的写法,特别是第二个“?”。 有人可以向我解释一下吗?

“已定义?”的三元表达式返回“表达式”而不是值?

我是Ruby和Rails的新手,但即使在搜索堆栈溢出和谷歌之后我也找不到答案。 我有一个简单的Ruby简写if语句应该返回一个integer如下所示: # in the context of this erb document `amount` is defined as 5. @c = ( defined? amount ? amount : r( 1,4 ) ) r()是一个自定义辅助函数, 在这种情况下返回1和4之间的随机数。 我打算这样做的方法是, if定义了amount ,那么使用定义为amount的数字, else生成1到4之间的随机数,然后使用它。 当打印出@c时,Ruby输出expression而不是数字。 我需要做些什么才能让我按照我的意图工作,我做错了什么? 非常感谢您的阅读!

有人可以向我解释以下代码吗?

我跟随Rails 3 in Action一书,它正在讨论模型中的覆盖to_s 。 代码如下: def to_s “#{email} (#{admin? ? “Admin” : “User”})” end 我知道在Ruby中你可以用”#{value}”在双引号中显示一个值,但是双重问号又是什么呢?

erb中的Ruby三元运算符?

如何让这段代码看起来更好: <%=raw manuscript.uploaded_to_s3? ? "” : “” %> 也就是说,HTML可以放在ERB块之外,这样可以更容易阅读吗?