sml - 在 SML 中重新定位元组元素的更短方法
问题描述
目前,我在我的一个函数中使用了这样的东西:(所有变量都与更复杂的函数一起使用,但是对于我要问的问题,这并不重要,我简化了)
fun RecursiveCall (p, q, r, s) =
let
val (ra, rb, rc) = returnResult (p, q, s)
in
RecursiveCall (p, ra, rb, rc)
end
我怎样才能以更短和(也许)更好的方式写这个?意思是,如何提取从函数返回的元组的元素并将它们作为另一个元组的参数传递?
注意:也可以简单地编写RecursiveCall (p, #1 (returnResult (p, q, s)) , #2 (returnResult (p, q, s)), #3 (returnResult (p, q, s)))
,但(可能)在某些情况下这会导致同一事物运行 3 次,即 returnResult。
解决方案
如果不了解您的实际问题,很难说出任何笼统的东西,但是您可以将元组的最后三个元素组合在一起(看起来它们是一个单元),例如
fun RecursiveCall p (q, r, s) = RecursiveCall p (returnResult (p, q, s))
推荐阅读
- sql - 如何从 BigQuery 的列中解析 JSON 文件
- php - 如何在下面的示例中使用“var_dump((bool) Yes)”输出“bool(true)”?
- php - 当实体被部分调用时检索实体的实例
- python - python ODR fir中的权重
- mysql - MySQL:在 SELECT 子句中使用子查询,它执行了多少次?
- java - 使用 Java ServletRequestAware 在 Google App Engine 上的会话不起作用
- microsoft-graph-api - 我可以在日历中添加多个事件吗?
- mysql - docker-compose keyrock mysql子网配置
- javascript - 为什么 for 循环中的事件处理程序不适用于所有迭代?
- multithreading - 非常短的任务的线程同步