我一直在寻找类似于Scala 数组中String.split的方法,但我找不到它.
我想要做的是通过分隔符拆分数组.
例如,分隔以下数组:
val array = Array('a', 'b', '\n', 'c', 'd', 'e', '\n', 'g', '\n')
Run Code Online (Sandbox Code Playgroud)
使用'\n'分隔符,应该导致:
List(Array(a, b), Array(c, d, e), Array(g))
Run Code Online (Sandbox Code Playgroud)
我知道我可以将Array转换为String,并在那里应用split:
array.mkString.split('\n').map(_.toArray)
Run Code Online (Sandbox Code Playgroud)
但我宁愿跳过转换.
到目前为止我的解决方案涉及递归使用span,并且有点过于样板:
def splitArray[T](array: Array[T], separator: T): List[Array[T]] = {
def spanRec(array: Array[T], aggResult: List[Array[T]]): List[Array[T]] = {
val (firstElement, restOfArray) = array.span(_ != separator)
if (firstElement.isEmpty) aggResult
else spanRec(restOfArray.dropWhile(_ == separator), firstElement :: aggResult)
}
spanRec(array, List()).reverse
}
Run Code Online (Sandbox Code Playgroud)
我确信Scala中肯定有一些东西我不见了.任何的想法?
谢谢,鲁本
在集成Facebook App时oauth.io,我们可以选择最新的API版本v2.3.
登录过程虽然有效,但是,在尝试检索用户数据(/me)时,只有元素name和id正在oauth.io响应的原始数据中传递:
curl "https://oauth.io/auth/facebook/me"
-H “oauthio:k=<myOauthKey>&access_token=<fbAccessToken>"
Run Code Online (Sandbox Code Playgroud)
我们得到以下回复:
{
"status": "success",
"data":
{
"id": "fbId",
"avatar": "https://graph.facebook.com/v2.3/fbId/picture",
"name": "User Name",
"gender": 1,
"url": "https://www.facebook.com/fbId",
"raw":
{
"name": "User Name",
"id": "fbId"
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果我们直接使用Facebook拨打电话,如果我在网址中指定它们,我可以获得额外的字段:
curl "https://graph.facebook.com/v2.5/me?access_token=<fbAccessToken>
&fields=name,email,gender,birthday,first_name,last_name,picture"
Run Code Online (Sandbox Code Playgroud)
我们得到了我们正在寻找的数据:
{
"name": "User Name",
"email": "email\u0040email.com",
"gender": "female",
"birthday": "03/02/1994",
"first_name": "User",
"last_name": "Name",
"picture": {
"data": {
"is_silhouette": false,
"url": "https://scontent.xx.fbcdn.net/hprofile-xlt1/v/t1.0-1/p50x50/whatever"
}
},
"id": "fbId"
}
Run Code Online (Sandbox Code Playgroud)
原因很清楚:因为v2.4 …