scalabook

Форк
0
/
generic-parameter.md 
36 строк · 2.0 Кб

Generic параметры

Так же как и у обобщенных классов, у методов есть полиморфизм по типу, с таким же синтаксисом (параметр типа указывается в квадратных скобках сразу после названия метода).

Пример:

def listOfDuplicates[A](x: A, length: Int): List[A] =
if length < 1 then Nil
else x :: listOfDuplicates(x, length - 1)
listOfDuplicates[Int](3, 4)
// res0: List[Int] = List(3, 3, 3, 3)
listOfDuplicates("La", 8)
// res1: List[String] = List("La", "La", "La", "La", "La", "La", "La", "La")

Метод listOfDuplicates

принимает параметр типа A
и параметры значений x
и length
. Значение x
имеет тип A
. Если length < 1
возвращается пустой список. В противном случае x
добавляется к списку, возвращаемому через рекурсивный вызовов с length - 1
. (Обратите внимание, что ::
означает добавление элемента слева к списку справа).

В первом вызове метода явно указывается параметр типа - [Int]

. Поэтому первым аргументом должен быть Int
и тип возвращаемого значения будет List[Int]
.

Во втором вызове показано, что не обязательно всегда явно указывать параметр типа. Часто компилятор сам может вывести тип исходя из контекста или типа передаваемых аргументов. В этом варианте "La"

- это String
, поэтому компилятор знает, что A
должен быть String
.


Ссылки:

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.