scala> val x = mutable.MutableList[(Int, Int)]()
x: scala.collection.mutable.MutableList[(Int, Int)] = MutableList()
scala> x += (1, 2)
<console>:10: error: type mismatch;
found : Int(1)
required: (Int, Int)
x += (1, 2)
^
Run Code Online (Sandbox Code Playgroud) 我已经检查它是否是下面的函数List[Int]或List[String].但如果我检查如下,总是如此.为什么以及如何定义要检查List[Int]或List[String]键入的函数.
if(checkIntCollection(List("q","aa","aa"))){
Logger.info("it is true")
} else {
Logger.info("it is false")
}
Run Code Online (Sandbox Code Playgroud)
要么
if(checkIntCollection(List(1,2,3))){
Logger.info("it is true")
} else {
Logger.info("it is false")
}
Run Code Online (Sandbox Code Playgroud)
以下是检查: -
def checkIntCollection[T](v: T) : Boolean = v match {
case _: List[Int] =>
Logger.info("It is List[Int] found")
true
case _ =>
Logger.info("It is unknown")
false
}
def checkStringCollection[T](v: T) : Boolean = v match {
case _: List[String] =>
Logger.info("It is List[String] found")
true
case _ …Run Code Online (Sandbox Code Playgroud) 我有一个没有扩展名的文件.但我需要找出该文件是否是使用java的zip文件.有没有办法找出该文件是否是zip格式?
如果我理解正确EitherT[Option,A,B]应该是相同的Option[Either[A,B]],但编译器不同意.以下代码无法编译:
def f[A,B] = implicitly[EitherT[Option, A, B] === Option[Either[A,B]]]
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
为什么 Scala 不能像这样推断?
def notInfering[A,B,C](aa: A=>Boolean, bbcc: Tuple2[B,C]) = bbcc
notInfering[Int]((_ > 3), ("string", 123))
Run Code Online (Sandbox Code Playgroud)
编译器生气地说我需要指定类型参数 B 和 C。
这些工作,但它们并不理想:
notInfering[Int,String,Int]((_ > 2), ("string", 123))
notInfering(((a: Int) => a > 2), ("string", 123))
Run Code Online (Sandbox Code Playgroud)
理论上,Scala 不应该能够推断出最后两个参数吗?这可以用另一种方式完成或表达吗?如果不是,这是否是 Scala 能够推断部分类型参数列表的一个好功能?
我只是不了解如何从以前的函数构建函数.
例如,math.min()至少需要两个数字的函数.如果我想创建一个函数min3Z(a:int, b:int, c:Int)怎么办?我将如何构建它min?
我该如何反汇编Scala代码?可以在没有首先构建Jar并对生成的.class文件进行反编译的情况下完成吗?有没有其他更快的方法来做到这一点?
对于Python dis ,可以使用如下:
def myfunc(alist):
return len(alist)
>>> dis.dis(myfunc)
2 0 LOAD_GLOBAL 0 (len)
3 LOAD_FAST 0 (alist)
6 CALL_FUNCTION 1
9 RETURN_VALUE
Run Code Online (Sandbox Code Playgroud) 我试图了解for与Scala相关的理解Maps.我有以下代码,我的意图是打破键值对,对值执行某些操作并返回修改后的值Map.我使用正确的功能还是应该使用其他功能?
val kvpair = Map("a" -> 1, "b" -> 2, "c" -> 3)
def multiplyValues(map: Map[Char, Int]) = {
for {
char <- map._1
value <- map._2 * 2
} yield (char, value )
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个返回数组中偶数值的函数.到目前为止,我有以下代码,但它不起作用:
(a: Array[Int]): Int = {
var howManyEven = 0
for(i <-0 to a.length) {
if(a(i)%2==0){
howManyEven+= 1
}
howManyEven
}
Run Code Online (Sandbox Code Playgroud)
另外,由于某种原因,我很难过如何返回数组中奇数值的数量.我的方法关闭了吗?我想我只是想知道用什么方法来生成我想要的输出.
scala ×9
collections ×1
disassembly ×1
function ×1
java ×1
scalaz ×1
tuples ×1
typeclass ×1
types ×1