我想有一个方法getInstance,它接受一个字符串值并返回一个对象的实例,在方法签名中定义为泛型
def getInstance[T](dataStr: String): Option[T] = {
T match {
case typeOf[String] => Some(dataStr) // if type of T is String
case typeOf[Integer] => Some(dataStr.toInt) // if type of T is Integer
case typeOf[Boolean] => Some(dataStr.toBoolean) // if type of T is Boolean
case _ => throw new NoSuchElementException()
}
}
Run Code Online (Sandbox Code Playgroud)
如何在Scala中编写相同的内容?
Scala版本:2.11
我正在使用一个丰富的:combobox(比如说id ="PARENT")并且想根据第一个丰富的选择属性改变另外两个富人的下拉列表:combobox(比如"CHILD1"和"CHILD2"):combobox(PARENT) ).
这该怎么做 ?
为了只改变一个rich:combobox(仅限CHILD1),我在"PARENT"中使用了a4j:support(reRender)标签,但对于两个,我没有得到.
我有一张地图
val strMap = Map[String, String]("a" -> "a1", "b" -> "b1") // Map(a -> a1, b -> b1)
Run Code Online (Sandbox Code Playgroud)
我想根据strMap中的值创建另一个具有相同键但值不同的地图.例如
case class Data(data: String) {}
var dataMap = scala.collection.mutable.Map[String, Data]()
strMap.foreach (keyVal => {dataMap(keyVal._1) = Data(keyVal._2)})
val dataMapToUse = dataMap.toMap // Map(a -> Data(a1), b -> Data(b1))
Run Code Online (Sandbox Code Playgroud)
但是以命令式方式编写这个问题会引起像创建"var dataMap"这样的问题,尽管我想获得不可变的地图.因此,我必须调用toMap来获得相同的结果.如何在函数式编程中实现相同的功能?
Scala版本:2.11
我有一个DataFrame,其中两列为"key":id1和id2:
val df1 = Seq(
(1, 11, "n1", "d1"),
(1, 22, "n2", "d2"),
(2, 11, "n3", "d3"),
(2, 11, "n4", "d4")
).toDF("id1", "id2", "number", "data")
scala> df1.show
+---+---+------+----+
|id1|id2|number|data|
+---+---+------+----+
| 1| 11| n1| d1|
| 1| 22| n2| d2|
| 2| 11| n3| d3|
| 2| 11| n4| d4|
+---+---+------+----+
Run Code Online (Sandbox Code Playgroud)
我想得到Json,按数据框的键分组,如下所示:
+---+---+-------+----------------------------------------------------------+
|id1|id2| json |
+---+---+-------+----------------------------------------------------------+
| 1| 11|[{"number" : "n1", "data": "d1"}] |
| 1| 22|[{"number" : "n2", "data": "d2"}] |
| 2| 11|[{"number" …Run Code Online (Sandbox Code Playgroud) 我有类似链接中提到的问题:如何使用Mockito模拟Scala对象中的函数?
我有一个FooInner方法对象stringData,它接受int并给出字符串输出
object FooInner {
def stringData(data: Int): String = {
data match {
case 1 => "one"
case _ => "else"
}
}
}
Run Code Online (Sandbox Code Playgroud)
另一个对象,FooOuter调用FooInner获取字符串数据并对其执行一些操作.
object FooOuter {
def dummyCall(data: Int): String = {
FooInner.stringData(data) + "some operation"
}
}
Run Code Online (Sandbox Code Playgroud)
我的目标是测试FooOuter.dummyCall字符串数据的方法,而不是返回FooInner.stringData
同样,我按照上面提到的帖子并创建了特征
trait TFooInner {
def stringData(data: Int): String
}
Run Code Online (Sandbox Code Playgroud)
将FooInner的签名更改为
object FooInner extends TFooInner {..}
Run Code Online (Sandbox Code Playgroud)
并创建了测试类FooTests
class FooTests extends FlatSpec with Matchers with MockitoSugar{
"dummyCall" should …Run Code Online (Sandbox Code Playgroud)