scala - 我在 Scala 规范中找不到带有方法参数的隐式转换特殊模式
问题描述
从磁铁模式文章中,我发现了隐式转换特殊模式。
有趣的是,这种方法也适用于具有多个参数以及不同返回类型的“重载”。如果您使用多个参数调用 complete ,编译器会查找可以从包装所有参数的元组中生成磁铁实例的隐式转换。这样可以支持多达 22 个参数的重载(scala 中元组的最大数量)。
scala> def printInt(i: Int) = println(i)
printInt: (i: Int)Unit
scala> printInt(10)
10
scala> printInt(10, 20)
^
error: too many arguments (2) for method printInt: (i: Int)Unit
scala> implicit def toOneInt(is: (Int, Int)): Int = is._1 + is._2
warning: there was one feature warning; for details, enable `:setting -feature' or `:replay -feature'
toOneInt: (is: (Int, Int))Int
scala> printInt((10, 20))
30
scala> printInt(10, 20)
30
printInt((10, 20))
让我很无聊,但printInt(10, 20)
太棒了!
然后我从Scala Language Specification (2.12)中寻找这种特殊模式的规范。但是我还找不到它,最后放弃了。
谁能告诉我Scala 语言规范 (2.12)的特殊模式在哪里?
解决方案
通过xuwei_k 帮助,我终于找到了“自适应参数”或“自动元组”功能的名称。有关更多详细信息,Scala Puzzle(jp)非常有用。
Scala Puzzlers还显示[SI-3583] Spec 没有提到自动元组 - Scala。
那么,答案还无处可寻。
推荐阅读
- c# - 已排序的 MVC 实体集合
- c# - 从另一台计算机连接到本地 MySQL 路由器
- php - 在php中匹配两个数组的ID
- html - ReactJS - Window.ScrollTo() 在辅助滚动条上不起作用
- hadoop - HBase 中的部分行键扫描
- rest - REST API 设计。检索和保存子记录
- firebase - 了解 index.js firebase 函数中的部署目标
- xml - 字符串连接functoid不将映射值返回到目标记录
- ios - 在 ios 中从不同的视图控制器(不是同时)多次调用相同的 Web 服务
- python - 将值应用于列并按这些值对所有列进行分组