我正在使用一个返回java接口的java对象,并且是scala的新手我正在尝试执行以下操作:
val model = dao.getAccount(id)
Run Code Online (Sandbox Code Playgroud)
model是一个接口,但我应该能够将它作为一个对象
但我知道在java中我可以像这样强制转换这个对象:
model = (AccountModel) accountDAO.getAccount(id)
Run Code Online (Sandbox Code Playgroud)
我如何在scala应用程序中执行此操作?
我试过这个:retVal.asInstanceOf(AccountModel)但似乎并不喜欢这样
试图解析request.queryString,它返回一个Map [String,Seq [String]]
var route = ""
var queryString = "?"
for((k,v) <- request.queryString) {
if(k == "route"){ route = v.head }
else {
queryString += k +"="+ v.head +"&"
}
}
queryString = queryString.substring(0, queryString.length() -1 );
Run Code Online (Sandbox Code Playgroud)
这很好,但非常必要.我确信有一种更实用的方法可以做到这一点.有帮助吗?
我使用以下对象来解析csv.解析器似乎正在正常工作,除了空格被剥离.有人可以帮我弄清楚发生了什么.谢谢
object CsvParser extends RegexParsers {
override protected val whiteSpace = """[ \t]""".r
def COMMA = ","
def DQUOTE = "\""
def DQUOTE2 = "\"\"" ^^ { case _ => "\"" }
def CR = "\r"
def LF = "\n"
def CRLF = "\r\n"
def TXT = "[^\",\r\n]".r
def record: Parser[List[String]] = rep1sep(field, COMMA)
def field: Parser[String] = (escaped | nonescaped)
def escaped: Parser[String] = (DQUOTE ~> ((TXT | COMMA | CR | LF | DQUOTE2)*) <~ DQUOTE) ^^ { …Run Code Online (Sandbox Code Playgroud) 我很难绕过如何解析csv文件并使用scala将其发布到web服务.
基本思路是我需要从csv文件创建post params.标题将是参数,以下行将是值ie.
示例csv
firstname, lastname, age, weight, height
John, Doe, 30, 180, 72
Mary, Jane, 28, 120, 64
Run Code Online (Sandbox Code Playgroud)
这将映射到参数
firstname=John&lastname=Doe&age=30&weight=180&height=72等.
我有以下scala来解析数据,但似乎无法弄清楚接下来该做什么:
val lines = fromFile("runners/io/m2m/naf/ARDS.csv").getLines
for ((line, cnt) <- lines.zipWithIndex) {
if (cnt == 0) {
for((header, i) <- CsvParser.parse(line).view.zipWithIndex){
}
}else {
for((data, i) <- CsvParser.parse(line).view.zipWithIndex) {
}
}
}
Run Code Online (Sandbox Code Playgroud) 我有以下方法,我想通过在列表上执行reduceLeft返回地图.我的问题是,有时列表是空的,所以我不确定正确的处理方法:
def results(start: String, end: String) = {
val iter = new QueryIterator(RK, start, end);
val list = for (hcol <- iter) yield (Map(hcol.getValue() ->
Map(hcol.getName()) -> hcol.getTime()))))
list.reduceLeft(_ ++ _)
}
Run Code Online (Sandbox Code Playgroud)
当列表为空时,它会抛出一个停止执行的异常.解决这个问题的最佳方法是什么?
我需要将以下java方法转换为scala并且遇到困难,因为scala不允许您在方法中间返回值.有人可以帮我或者至少开始如何转换这个:
public boolean isAllowed(String method, String path, Map<String,String> apiUrlMap) {
if (apiUrlMap != null) {
Set<Entry<String, String>> apiSet = apiUrlMap.entrySet();
for (Entry<String, String> apiUrl : apiSet) {
String aUrl = apiUrl.getKey();
String aMeth = apiUrl.getValue();
if (aUrl.equals("#")) {
if (aMeth.contains(method)) {
return true;
}
}
if (aUrl.endsWith("#")) {
String testUrl = aUrl.replaceFirst("/#", "");
if (path.startsWith(testUrl)) {
if (aMeth.contains(method)) {
return true;
}
}
}
if (aUrl.equals(path) || path.equals(aUrl +"/")) {
if (aMeth.contains(method)) {
return true;
}
}
}
}
return …Run Code Online (Sandbox Code Playgroud)