评估Ruby中的Array#join的许多布尔表达式

Ruby中,您可以使用 Array#join将多个字符串与可选的分隔符简单连接在一起.
[ "a","b","c" ].join        #=> "abc"
[ "a","c" ].join("-")   #=> "a-b-c"

我想知道是否有很好的语法糖做一些类似于一堆布尔表达式的事情.例如,我需要&一大堆表达在一起.然而,将使用哪些表达式由用户输入确定.所以,而不是做一堆

cumulative_value &&= expression[:a] if user[:input][:a]

我想首先根据输入收集所有的表达式,然后&&他们一起在一起.就像是:

be1 = x > y
be2 = Proc.new {|string,regex| string =~ regex}
be3 = z < 5 && my_object.is_valid?
[be1,be2.call("abc",/*bc/),be3].eval_join(&&)

缺省情况下是否有Ruby设备?我只想要一些合成糖,使代码更清洁,如果可能的话.

解决方法

尝试 Array#all?.如果arr是一个布尔阵列,这本身就是这样的:
arr.all?

如果arr中的每个元素都为true,则返回true,否则返回false.

您可以以相同的方式使用Array#any?加入||上的数组,也就是说,如果数组中的任何元素为真,否则返回false.

只要arr是Procs的一个数组,只要确保将正确的变量传递给块中的Proc#调用(或使用类,实例或全局变量),这也将起作用.

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...