2017-02-11 68 views
0

我有下面这应该采取检索字符串列表,并将其退回到一个选项菜单中的代码。但是,在代码片段中的自动完成代码后面的#>处出现错误,它显示“找不到参数计算机的隐式值:net.liftweb.util.CanBind [scala.xml.NodeSeq with Int => scala.xml.NodeSeq ]“阶回归名单的HTML

// The html code 
<select id="autoComplete" class="marketplace.pharmacy.list"> 
    <option id="drug">Drug Name</option> 
</select> 

// The snippet 
def getAutoComplete(str: String): CssSel = "#autoComplete" #> { 
    getRxAutoComplete(str) match { 
    case list => "select" #> list.map { drug => 
     drug #> ("option *" #> drug) 
    } 
    case List() => NodeSeq.Empty 
    } 
} 


// The code to return the results (simplified) 
def getRxAutoComplete(str: String): List[String] = { 
    val list = List("Amoxicillin", "Amoximoxi", "Amoxia") 
    list 
} 

回答

0

您遗漏了隐式转换。您可能需要导入定义此类隐式转换的某些类库,以将它们引入您的范围。找到这个类的确切名称是在你的图书馆的文档进行一些研究。

1

问题是您在匹配语句中返回两种不同类型。第一个返回CssSel,并在第二你是返回一个NodeSeq

您可以通过改变修复:

case List() => "*" #> NodeSeq.Empty 

或使用net.liftweb.util发现ClearNodes方法:

case List() => ClearNodes 
+0

谢谢。我曾尝试使用NodeSeq.Empty作为其中一个条目。编译器然后抱怨其中一个条目是NodeSeq,而NodeSeq.Empty是Int。 –

+0

对不起,我给它仔细一看后回答更新。 – jcern