ruby 的 while 可以在判断时执行部分操作,这种特性真是让我这种菜鸟感到舒适。比如
list = [1,2,3,2,3,4,2,2,1]
while (a=list.index(2); puts 'hi'; a)
puts a
list.delete_at(a)
end # => hi 1 hi 2 hi 4 hi 4 hi
刚才发现 if 也可以。比如
if (list<<4; list.size>5) then puts 'hi' end # => hi
进入正题。我在 python3.7 上发现不能在 if 或 while 的判断流程中设定多语句;而 nodejs 的类似语句我不会写。 所以说这里 while 和 if 接受的对象可以是 bool 或者 Proc 类型吗?感觉 (a=list.index(2); puts 'hi'; a) 就像是个 Proc。 对 ruby 了解还不多,可能有没说清楚的地方,求轻拍。
更新:发现一个有趣的做法,这让我更认定 ruby 的流程的魔幻性了,这个真的非常方便,第一次感受到相对于其他脚本语言的极大的优越性,哈哈。比如
a = 5
puts 'good' if 7==(puts 'hi'; 7 if (a<6)) # => hi good