如何使用正则表达式对数组中的第一个字符串元素进行模式匹配?
例如,考虑一下
Array("col",1) match {
case Array("""col | row""", n, _*) => n
case _ => 0
}
Run Code Online (Sandbox Code Playgroud)
0虽然期望的结果是1,但它可以提供.
非常感谢.
考虑一个可能有大量成员的案例类; 为了说明这个案例假设两个论点,如
case class C(s1: String, s2: String)
Run Code Online (Sandbox Code Playgroud)
因此假设一个大小至少为那么多参数的数组,
val a = Array("a1", "a2")
Run Code Online (Sandbox Code Playgroud)
然后
scala> C(a(0), a(1))
res9: C = c(a1,a2)
Run Code Online (Sandbox Code Playgroud)
但是,是否存在一种案例类实例化方法,其中不需要为数组中的每个元素引用任何(可能是大量)预定义类成员?
在Scala字符串中需要包含这个文字的逐字:\usepackage{x}.因此,期望的是
val s = """ ... \usepackage{X} ... """
println(s)
... \usepackage{X} ...
Run Code Online (Sandbox Code Playgroud)
到目前为止的尝试包括,
scala> """\usepackage{X}"""
<console>:1: error: error in unicode escape
"""\usepackage{X}"""
^
scala> raw"""\usepackage{X}"""
<console>:1: error: error in unicode escape
raw"""\usepackage{X}"""
^
Run Code Online (Sandbox Code Playgroud)
单双引号字符串也证明不成功.
在http://docs.scala-lang.org/overviews/core/string-interpolation.html之后,一个工作示例包括
scala> raw"a\nb"
res1: String = a\nb
Run Code Online (Sandbox Code Playgroud)
这不包括unicode案件.
转换true: Boolean为String的一种方法是
scala> true.toString
res: String = true
Run Code Online (Sandbox Code Playgroud)
然而,
scala> true.asInstanceOf[String]
java.lang.ClassCastException: java.lang.Boolean cannot be cast to java.lang.String
Run Code Online (Sandbox Code Playgroud)
为什么后者尝试失败?
非常感谢
我正在尝试读取一个 csv 文件并将其作为双精度数组 ( Array[Array[Double]])的数组返回。如何逐行读取文件并立即打印出来很清楚,但不知道如何将其存储在二维数组中。
def readCSV() : Array[Array[Double]] = {
val bufferedSource = io.Source.fromFile("/testData.csv")
var matrix :Array[Array[Double]] = null
for (line <- bufferedSource.getLines) {
val cols = line.split(",").map(_.trim)
matrix = matrix :+ cols
}
bufferedSource.close
return matrix
}
Run Code Online (Sandbox Code Playgroud)
有一些类型问题,然后意识到我没有做我认为我在做的事情。任何将我指向正确轨道的帮助将不胜感激。
我需要Seq根据条件添加项目.
我唯一能做的就是:
if(condition){
part1 ++ part2 ++ Seq(newItem)
}
else {
part1 ++ part2
}
Run Code Online (Sandbox Code Playgroud)
part1并且part2是Seq[String].它有效,但有很多重复的代码.有什么方法可以做得更好吗?谢谢
让一个不可变的地图
val m = (0 to 3).map {x => (x,x*10) }.toMap
m: scala.collection.immutable.Map[Int,Int] = Map(0 -> 0, 1 -> 10, 2 -> 20, 3 -> 30)
Run Code Online (Sandbox Code Playgroud)
一系列感兴趣的钥匙
val k = Set(0,2)
Run Code Online (Sandbox Code Playgroud)
和一个功能
def f(i:Int) = i + 1
Run Code Online (Sandbox Code Playgroud)
如何应用于f感兴趣的键映射的映射中的值,以便生成映射
Map(0 -> 1, 1 -> 10, 2 -> 21, 3 -> 30)
Run Code Online (Sandbox Code Playgroud) 我想知道是否有办法在列表中找到一个元素并将其移动到Scala列表的前面?有没有什么简单的方法可以做到这一点,除了迭代列表,然后删除该元素,然后将其预先挂起到列表的前面?
我有一个Array[Array[Float]]保证所有内部数组长度相同的.我想在所有内部数组上执行元素加法.
让我用一个具体的例子说明这一点.假设我的Array包含三个由七个Floats组成的Arrays,其值如下:
Array[Array[Float]] = Array(
Array(0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0),
Array(1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0),
Array(0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0)
)
Run Code Online (Sandbox Code Playgroud)
现在我想将其转换为大小为7的数组,其中第n个元素是我输入中第n个元素的总和Array.对于我的示例输入,输出将是:
Array[Float] = Array(1.0, 3.0, 3.0, 5.0, 5.0, 7.0, 7.0)
Run Code Online (Sandbox Code Playgroud)
为了在两个Array[Float]人身上执行此操作,我知道我可以压缩它们然后添加带有地图的元素.然而,我仍然在努力寻找能够将任意数量Array[Float]的元素相加的更通用的解决方案.
任何帮助将非常感激!
我有一个使用Apache NiFi接收器的火花流Scala项目.这些项目在Eclipse/Scala IDE下运行良好,现在我想将其打包以进行部署.当我把它添加为
libraryDependencies += "org.apache.nifi" %% "nifi-spark-receiver" % "0.3.0"
Run Code Online (Sandbox Code Playgroud)
sbt假设它是一个Scala库并试图解决它.
我如何将NiFi接收器及其所有依赖项添加到项目的SBT文件中?
此外,是否有可能将依赖项pint到本地目录而不是sbt试图解决?
提前致谢.
这是我的sbt文件内容:
name := "NiFi Spark Test"
version := "1.0"
scalaVersion := "2.10.5"
libraryDependencies += "org.apache.spark" %% "spark-core" % "1.5.2" % "provided"
libraryDependencies += "org.apache.nifi" %% "nifi-spark-receiver" % "0.3.0"
Run Code Online (Sandbox Code Playgroud)