在使用
Java或C编程时,我有很多次遇到一个简单的模式,自定义控件结构可以减少代码中的样板.它类似于:
if( Predicate ){ Action return Value }
也就是说,“return if”类型语句.我已经尝试使用像foo [A,B](pred:((A,A)=>布尔),值:选项[B])这样的签名函数但是我最后检查我是否已经返回了一些或者没有.我被退货声明绊倒了.
是否有继承方式在函数式语言或更具体的Scala中创建这样的控制结构?
编辑:
我的描述并不那么清楚,而且那些试图帮助我的人会感到困惑.我的foo不起作用的关键原因是它不能使包含函数的评估短路.那是
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中进行尾递归.
解决方法
嗯,据我所知,你希望控制结构中的返回退出它所嵌入的函数.
那么在你的例子中它应该退出方法相交?
我不确定这是否可能.因为return_if内部的返回总是会退出return_if而我认为没有办法告诉scala,返回应该退出函数return_if嵌入.
我希望我明白你想做什么:)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。