Python具有非常优雅的语法,可以针对多种模式检查值.
2 in [1,2,4] #=> True
6 in [1,2,4] #=> False
Run Code Online (Sandbox Code Playgroud)
Ruby版本的订单感觉不对:
[1,2,4].include?(2)
Run Code Online (Sandbox Code Playgroud)
我明白这include?比OO更有意义2.included_in?([1,2,4]),我仍然不喜欢它.Ruby甚至有in关键字,但它似乎只用于构造for i in [1,2,4],而不是用于成员资格测试.
另一种方式是这样的:
(case 2 when 1,2,4 then true end)
Run Code Online (Sandbox Code Playgroud)
相当冗长,但允许模式测试:
(case file_name when "README", /\.txt\z/ then true end)
Run Code Online (Sandbox Code Playgroud)
仍然不是很可读.
我偶然错过了一些非常漂亮的方式吗?
正如@deceze所说,你可以实现自己的:
class Object
def in(ar)
ar.include? self
end
end
irb(main):013:0> 's'.in ['a', 'b', 'c']
=> false
irb(main):014:0> 's'.in ['a', 'b', 'c', 's']
=> true
irb(main):015:0> 5.0.in [3.2, 5.0, 1.2]
=> true
irb(main):016:0> 4.0.in [3.2, 5.0, 1.2]
=> false
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
128 次 |
| 最近记录: |