Ответ 1
myList ::: _
преобразуется в _.:::(myList)
, тогда как myList :::
переводит на myList.:::(_)
.
TL;DR
Этот пост более подробно описывает правильные ассоциативные методы. Что здесь происходит:
-
def concat0:(List[Int]=> List[Int]) = x=> myList:::x
- Scala компилятор может сделать вывод, что x, если тип
List[Int]
-
List
имеет метод:::
- Из-за правил правильной ассоциативности это превращается в
x.:::(myList)
, который добавляетmyList
кx
.
- Scala компилятор может сделать вывод, что x, если тип
- def concat: (List [Int] = > List [Int]) = myList:
-
myList
если типList[Int]
- Не существует правой части
:::
, поэтому нет правой ассоциативности - Вместо этого компилятор сообщает a. между
myList
и:::
-
myList.:::
совпадает сx => myList.:::(x)
, который добавляетx
кmyList
.
-