Дополнение с параметром универсального типа в Scala - PullRequest
3 голосов
/ 19 января 2010

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

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

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

Ответы [ 2 ]

4 голосов
/ 19 января 2010

A может быть любого типа в этом случае.x + y означает x.+(y), который компилируется только в том случае, если либо a) тип A имеет метод +, либо b) тип 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    
}
0 голосов
/ 19 января 2010
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...