目的是使用Scala集合,其中不需要迭代或递归计算大小.
例如,List证明是递归构造(例如考虑/sf/answers/573847851/),并且为了获得大小,有必要迭代它; 即O(N)对列表中元素数量的操作.
那么要问这个操作是哪个集合O(1)?非常感谢.
如何将地图转换为列表而不在scala中的列表中包含映射键?
val mp = collection.mutable.Map[Long, String]()
mp(0) = "val0"
mp(1) = "val1"
mp(2) = "val2"
mp.toList //I want: List("val0", "val1", "val2")
Run Code Online (Sandbox Code Playgroud) 我陷入了Scala中一个令人尴尬的简单问题(这是我的新手)。
如何"2"从这样的结构中检索第二个(比如说)元素()Scala:
scala> val a = ("1", "2", "3")
a: (String, String, String) = (1,2,3)
Run Code Online (Sandbox Code Playgroud) 在生成如下列表时,lambda函数在方括号外声明,然后应用于每个i,
>>> g = lambda x: x*10
>>> [g(i) for i in range(10,21)]
[100, 110, 120, 130, 140, 150, 160, 170, 180, 190, 200]
Run Code Online (Sandbox Code Playgroud)
是否有可能(以及如何)在列表中声明lambda函数并调用它?
对于在有限域内返回值的案例的长列表,如何减少案件声明的数量增加?比如考虑一下
"abc" match {
case "a" => 1
case "ab" => 1
case "aw" => 2
case "hs" => 2
case "abc" => 1
case _ => 0
}
Run Code Online (Sandbox Code Playgroud)
试Map[Set[String],Int]过去哪里
val matches = Map( Set("a","ab","abc") -> 1, Set("aw","hs") -> 2 )
Run Code Online (Sandbox Code Playgroud)
并定义
def getMatch(key: String, m: Map[Set[String],Int]) = {
val res = m.keys.collectFirst{ case s if s(key) => m(s) }
res.getOrElse(0)
}
Run Code Online (Sandbox Code Playgroud)
是否有更简单和/或更有效的方法?
鉴于:
Seq(1,2,3) map {
case 1 => 11
case 2 => Seq(12,13,14)
case 3 => 15
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能优雅地将其展平为Seq[Int]含有Seq(11,12,13,14,15)?
我正在进行某种测验,并有一个问题和答案列表,通过控制器转移到我的视图类.人们可以在一个页面上提问和回答问题,然后我的系统会"收集"这些问题以便从中进行测验.
如果您是第一个启动程序/测验的人,则问题列表为空.因此,我想检查一个带有if/else子句的空测验,if-case似乎工作正常,但是else-case抛出一个IndexOutOfBoundsException而我不明白为什么.我认为当问题列表为空时不会使用else-part,因此不应该抛出异常.应该....
查看课程:
@(questionList: List[Question], answerList: List[Answer], answerRadioForm: Form[Answer])
@if(questionList.length == 0){
No questions yet!
}
else {
<!-- As only the highest ranked question gets put into the List, there is only one entry on first place -->
<b>@questionList.get(0).questionText</b>
@for(question <- questionList) {
@question.questionText - @question.ownerID <br>
}
}
Run Code Online (Sandbox Code Playgroud)
错误:
[IndexOutOfBoundsException: Index: 0, Size: 0]
49 <b>"""),_display_(/*27.8*/questionList/*27.20*/.get(0).questionText),format.raw/*27.40*/("""</b>
Run Code Online (Sandbox Code Playgroud)
那么,我在这里错过了什么?
我有
val a = List(1, List(2,3), 4)
Run Code Online (Sandbox Code Playgroud)
我想将任何列表转换为List[Int].我怎样才能做到这一点?
预期的答案是:
List(1,2,3,4)
Run Code Online (Sandbox Code Playgroud) 我是Scala的新手.我有三个List.
List("XX", None,None,None)
List( None,"YY",None,None)
List(None,None,None, "ZZ")
Run Code Online (Sandbox Code Playgroud)
我需要合并这些列表来创建一个应该看起来像的列表
List("XX","YY",None,"ZZ")
Run Code Online (Sandbox Code Playgroud)
scala有什么方法可以实现这个结果吗?谢谢
我是斯卡拉的新手.我试图在scala中使用if-else块来尝试返回"Int".
我的代码看起来像这样:
val blockNumber = {
if(x.getName equals ("NATIVE")) 0
else {
if(x.getName equals ("DATIVE")) 1
}
}
Run Code Online (Sandbox Code Playgroud)
我blockNumber在方法setBlockNumber()和问题发生时使用此值:
new setBlockNumber(Option(blockNumber))
Run Code Online (Sandbox Code Playgroud)
但每次我尝试这样做时,该方法都会出错:
type mismatch; found : AnyVal required: Int
Run Code Online (Sandbox Code Playgroud)
有人可以指出我的错误,我该如何重新调整?谢谢你的提前时间.
对于Seq 包含在a中的给定Future,例如
import scala.concurrent._
import ExecutionContext.Implicits.global
val xs = Future { Seq(1,2,3) }
Run Code Online (Sandbox Code Playgroud)
如何将集合中的第一个(仅一个)值提取到另一个中Future,即
Future { 1 }
Run Code Online (Sandbox Code Playgroud) 我对匿名函数定义感到困惑如下:
var plusOne = (x:Int)=>x+1
// or val plusOne=(x:Int)=>x+1
println(plusOne(2))
Run Code Online (Sandbox Code Playgroud)
要么
def plusOne = (x:Int)=>x+1
println(plusOne(2))
Run Code Online (Sandbox Code Playgroud)
和var/ val和def函数名称有什么区别.
scala ×11
list ×2
collections ×1
exception ×1
future ×1
if-statement ×1
lambda ×1
map ×1
mutable ×1
python ×1
python-3.x ×1
return-value ×1
tuples ×1