Дополнение с параметром универсального типа в Scala

Привет, я новичок в Scala и пытаюсь написать дополнение программы с параметром универсального типа, как показано ниже

object GenericTest extends Application {
  def func1[A](x:A,y:A) :A = x+y    
    println(func1(3,4))
}

Но это не работает. Какую ошибку я делаю.

2 ответа

Решение

A может быть любого типа в этом случае. x + y средства x.+(y), который будет компилироваться только если а) тип A был метод +или б) тип A был неявно преобразован в тип с методом +,

Тип scala.Numeric обеспечивает возможность написания кода, который абстрагируется от числовой системы - он может вызываться с помощью Double, Int или даже вашей собственной экзотической числовой системы, такой как комплексные числа.

Вы можете добавить неявный параметр в ваш метод типа Numeric[A],

object GenericTest extends Application {
  def func1[A](x: A, y: A)(implicit n: Numeric[A]): A = x + y    
}

В Scala 2.8 это можно сократить:

object GenericTest extends Application {
  def func1[A: Numeric](x: A, y: A): A = x + y    
}

Перейти к Scala: Как определить "общие" параметры функции? за то, что вы хотите.

Другие вопросы по тегам