- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 scala 中有一个返回元组的函数:
private def someFunction(from: List[Any], to: List[Any]): (List[Any], List[Any]) = {
// Do some stuff
(modifiedFrom, modifiedTo)
}
我想分解该元组,并将值作为参数传递给另一个函数:
@tailrec
someOtherFunction(first: List[Any], second: List[Any], third: List[Any]): Unit = {
// Some more stuff
val (two, three) = someFunction(foo, bar)
someOtherFunction(one, two, three)
}
是否可以这样写:
someOtherFunction(one, someFunction(foo,bar)) // This is a compile error.
我可以用更简洁的方式编写分解吗?
最佳答案
不太漂亮(scala 想要类型归属),但如果你真的想要一行:
def f1(): (Int, Int) = (2,3)
def f2(a: Int, b: Int, c: Int) = 0
(f2(1, _: Int, _: Int)).tupled(f1())
说明:
tupled
是为每个 Function
实例定义的方法(作为一等公民 lambda)。它返回一个可以接受元组的函数。
f2(1, _: Int, _: Int)
是一个部分应用程序 - 它从此处的第二个和第三个参数返回一个函数,因此之后可以对其进行“元组”
附注您可以通过将 f2
重新定义为来避免类型归属的丑陋:
def f2(a: Int)(b: Int, c: Int) = 0
f2(1) _ tupled f1()
<小时/>
更新。如果您不想破坏尾递归,请使用 TailCalls :
import scala.util.control.TailCalls._
def f2(a: Int)(b: Int, c: Int): TailRec[Int] =
if (false) tailcall(f2(1) _ tupled f1()) else done(0)
f2(1)(2, 3).result
这里的额外优势是,如果您的 f2
变得更加复杂 - 更容易跟踪代码中尾部定位的调用。它还支持诸如相互尾递归之类的东西。
说明:
tailcall
标记尾递归调用done
标记要在循环结束时返回的值.result
运行堆栈安全计算并从 TailCall[T]
中提取结果。您还可以注意到 TailCall
包装器与 @tailrec
起着类似的作用 - 它不允许非尾部定位调用,因为它需要“解开”结果。编译器级优化正在被蹦床计算所取代,蹦床计算也是堆栈安全的。关于scala - 带返回元组的函数调用,没有中间值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44582873/
我是 Javascript 的新手。由于一些遗留系统,目前我正在将一些 ES6 代码转换回 ES5 代码。我转换了以下代码: $row.find('.gridCellDetailAction') .
这是我的父类,它有 trigger 方法,即 public 方法: class BaseEffect { //properties and contructor... //other
我正在关注构建你的第一个区 block 链教程 (https://www.youtube.com/watch?v=coQ5dg8wM2o&t=494s)。 我的 index.html 中有以下内容:
我是一个使用 ScrollMagic 的菜鸟,并尝试通过复制 ScrollMagic 的示例之一来学习。 http://scrollmagic.io/examples/advanced/advance
需要帮助调试一小段脚本。 我使用“masonry”插件以平铺方式排列多个 div。该脚本似乎工作正常,除了我收到错误 jQuery (intermediate value).imagesLoaded
我使用 jQuery Autosize 插件: http://www.jacklmoore.com/autosize/ 您可以在此处看到脚本本身: http://www.jacklmoore.com/
我必须遵循以下关系: class Course true, :id => false do |t| t.integer :user_id t.integer :course_id t.i
我的路线是这样的 import express from 'express' import mysql from 'mysql2' import { dbusername } from '../con
我正在尝试使用 Chart Js 库生成圆环图,结果抛出错误 Uncaught TypeError: (intermediate value).Doughnut is not a function。我
我在一个名为 StructureWindowComponent 的组件中实现事件处理,并且在 LeggerStructureWindowComponent 中也有一个覆盖它。 在基类(Structur
问题:我想将使用 xlsx 的条件格式 icon_set 应用于列,但没有获得正确值的正确箭头 这是我想要的输出: 这是我当前的输出: 这是我的代码: writer.sheets[sheet].con
这是我的 webpack.config.js "use strict"; var webpack = require('webpack') module.exports = { entry:
请帮助我。当我在 ASP.NET MVC 中使用 jQuery 时出现错误。 Uncaught TypeError: ((x.event.special[i.origType] || (interme
我是一名优秀的程序员,十分优秀!