在使用 Java 或 C++ 编程时,我多次遇到一个简单的模式,自定义控制结构可以减少我代码中的样板。它类似于:
if( Predicate ){
Action
return Value
}
也就是说,一个“return if”类型的语句。我尝试过使用类似签名的函数创建函数,foo[A,B]( pred:((A,A)=>Boolean), value:Option[B] )
但最后我检查是否返回了 Some 或 None。我被return
声明绊倒了。
是否有一种在函数式语言或更具体地说是 Scala 中制作此类控制结构的继承方式?
编辑:
我的描述不是很清楚,这让试图帮助我的人感到困惑。myfoo
不起作用的关键原因是它不能使包含函数的评估短路。那是
def intersect( geometry:Geometry, reference:Geometry ):Geometry = {
return_if( withinBounds( geometry, projection ), logToString( logger, "Geometry outside " + projection.toString ), EmptyGeometry() )
return_if( topologicallyCorrect( geometry ), intersect( correct( geometry ), reference )
//rest of the function
}
并且仍然允许在return_if
.