Tôi gặp sự cố với mã này. Nó được coi là một OperationTree với Elements BinaryOperations và UnaryOperations. Phương pháp eval thực hiện đánh giá và tìm kiếm các biến trong bản đồ.Loại đối số của hàm ẩn danh
Dưới đây là đoạn code
1 import collection.immutable.HashMap
2 sealed abstract class OpTree[T]{
3
4 def eval(v:HashMap[Char,T]):T = {
5 case Elem(x) => x
6 case UnOp(f,c) => {
7 f(c.eval(v))
8 }
9 case BinOp(f,l,r) => {
10 f(l.eval(v),r.eval(v))
11 }
12 case Var(c) => {
13 v.get(c)
14 }
15 }
16 }
17 //Leaf
18 case class Elem[T](elm:T) extends OpTree[T]
19 //Node with two sons
20 case class UnOp[T](f:T => T, child:OpTree[T]) extends OpTree[T]
21 //Node with one son
22 case class BinOp[T](f:(T,T) => T, left:OpTree[T], right:OpTree[T]) extends OpTree[T]
23 case class Var[T](val c:Char) extends OpTree[T]
Các trình biên dịch nói:
OpTree.scala:4: error: missing parameter type for expanded function
The argument types of an anonymous function must be fully known. (SLS 8.5)
Expected type was: T
def eval(v:HashMap[Char,T]):T = {
^
one error found
Mọi góp ý ??
Cảm ơn!
Nó sẽ giúp để biết được nơi dòng 4 thực sự là trong đoạn Bạn đã đăng. –
của nó: def eval (v: HashMap [Char, T]): T = { – xyz