Я не могу найти специальный шаблон неявного преобразования с аргументами метода в спецификации Scala - PullRequest
0 голосов
/ 16 декабря 2018

Из В статье Magnet Pattern я обнаружил специальный шаблон неявного преобразования.

Интересно то, что этот подход также работает для «перегрузок» с более чем одним параметром, так же кака также различные типы возврата.Если вы вызываете 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 (2.12) .Однако я пока не могу его найти и, наконец, сдаюсь.

Может кто-нибудь показать мне, где находится особый образец из Спецификация языка Scala (2.12) ?

1 Ответ

0 голосов
/ 16 декабря 2018

По xuwei_k help , наконец-то я добрался до названия функции "адаптированные аргументы" или "автоматическая запись".Для получения более подробной информации, Scala Puzzle (jp) был очень полезен.

А также Scala Puzzlers показывает [SI-3583] В спецификации не упоминается автоматическийtupling - Scala .

Тогда ответа пока нет.

...