什么是最紧凑的Groovy语句,它测试列表中的所有项目是否可以转换为长?

我正在寻找一个简洁的表达式来评估列表中的所有项目是Longs还是可以转换为Longs.我正在寻找一个紧凑的表达,但我更喜欢可读性而不仅仅是 code golf.

例子:

assert expr([1,2,'3'])
assert expr([1,'fish',3]) == false
assert expr([null]) == false
assert expr([' ',17]) == false

解决方法

为了便于阅读,我会做类似的事情:

def canBeLongs(things) {
    things.every { 
        try { Long.valueOf(it); true } 
        catch (e) { false }
    }
}

assert canBeLongs([1,'3'])
assert !canBeLongs([1,3])
assert !canBeLongs([null])
assert !canBeLongs([' ',17])

对于lulz来说,这个其他解决方案非常糟糕,但它非常简洁,涵盖了所有测试用例:

def f(l) { l.join() ==~ /[0-9]*/ }

assert f([1,'3'])
assert !f([1,3])
assert !f([null])
assert !f([' ',17])

相关文章

背景:    8月29日,凌晨4点左右,某服务告警,其中一个...
https://support.smartbear.comeadyapi/docs/soapui/steps/g...
有几个选项可用于执行自定义JMeter脚本并扩展基线JMeter功能...
Scala和Java为静态语言,Groovy为动态语言Scala:函数式编程,...
出处:https://www.jianshu.com/p/ce6f8a1f66f4一、一些内部...
在运行groovy的junit方法时,报了这个错误:java.lang.Excep...