问题标签 [for-comprehension]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
scala - 理解 Scala 的 For 循环的作用域(为了理解)
在Programming Scala的第 3 章中,作者给出了 for 循环 / for 推导式的两个示例,但在使用 () 和 {} 之间切换。为什么会出现这种情况,因为它们本质上看起来像是在做同样的事情?breed <- dogBreeds
示例#2中的第2行是否有原因?
scala - Scala 用于理解和部分映射
Scala 语言规范第6.19节说:
A for comprehension
for (p <- e) yield e0
被翻译为e.map { case p => e0 }
所以...
到现在为止还挺好:
为什么第二个版本不行?或者更确切地说,为什么第一个版本有效?
scala - Scala "<-" 用于理解
我发现 Scala 总是对任何事情都有“自然的解释”。总是像“哦,但这只是在这个和那个对象上使用这个和那个参数调用的函数”。从某种意义上说,没有什么是真正的编译器魔法,正如我们从其他语言中所知道的那样。
我的问题是关于以下代码中使用的<-运算符:
在这个例子中,我可以看到它被重写为:
但这并不能解释我是如何进入 foreach 函数内的匿名函数的。在您编写i时,它不是一个对象,也不是一个声明的变量。那么它是什么,它是如何被转移到 foreach 内部的呢?
我的猜测是我终于发现了一些实际上是编译器魔法的东西
谢谢你的时间。
为了澄清,我的问题是: <- 运算符如何在第一行代码中工作,因为 i 不是可以作为函数调用的对象。
scala - 我怎样才能在理解中做“if..else”?
我问了一个非常基本的问题,最近让我很困惑。我想编写一个 Scala For 表达式来执行以下操作:
问题是,在多个生成器的 For 表达式中,我不知道我可以将每个 for 表达式主体放在哪里。
如何以 Scala 风格重写代码?
scala - Scala 的理解效率?
在“Programming In Scala”一书第 23 章中,作者举了一个例子:
作者说,这会翻译成:
但是,如果您查看 map 和 flatmap 方法定义(TraversableLike.scala),您可能会发现,它们被定义为 for 循环:
好吧,我猜这个 for 将不断被翻译成 foreach 然后翻译成 while 语句,这是一个构造而不是表达式,scala 没有 for 构造,因为它希望 for 总是产生一些东西。
那么,我想和你讨论的是,为什么 Scala 会这样做“为了翻译”?作者的例子使用了4个生成器,最后会被翻译成4级嵌套的for循环,我想当它books
很大时它的性能会非常糟糕。
Scala 鼓励人们使用这种“语法糖”,你总是可以看到大量使用 filter、map 和 flatmap 的代码,这似乎程序员忘记了他们真正做的是将一个循环嵌套在另一个循环中,而实现的只是使代码看起来更短。你的想法是什么?
scala - 我可以使用 for-comprehenion / yield 在 Scala 中创建地图吗?
我可以“屈服”成地图吗?
我试过了
(和,
而不是->
),但我得到了错误
我知道为什么,但我不知道如何解决这个问题:-/
scala - 在理解中使用 List 组合选项会根据顺序给出类型不匹配
为什么这种构造会在 Scala 中导致类型不匹配错误?
如果我用 List 切换 Some 它编译得很好:
这也可以正常工作:
scala - Scala 理解语法
在下面的代码中,在for
理解内,我可以使用元组解引用来引用字符串和索引:
Scala 语法中是否有任何方法可以在理解标头中拆分为stringWithIndex
部分(字符串和索引),以便代码读者不必怀疑and的值?for
stringWithIndex._1
stringWithIndex._2
我尝试了以下方法,但无法编译:
scala - 在 scala 中模拟理解
我有这段代码
我想对它进行单元测试。我想模拟 table.find 以返回我想要的元素序列。我已经尝试过迭代器接口的模拟hasNext()
和next()
方法,但它似乎不起作用。模拟理解的方法是什么?
scala - 需要最好的方法来迭代将成批的行作为 XML 返回的文件
我正在寻找处理文件的最佳方法,在该文件中,我根据内容将某些行组合成 XML 并返回 XML。
例如给定
我可能希望第一个电话返回
以及随后的返回电话
跳过第 3 行以获取无趣的内容并耗尽输入流。(注意:<msg>
标签将始终包含连续的行,但这些行在 XML 中的数量和组织会有所不同。)如果您想要一些标准来选择要包含在消息中的行,假设奇数行 #s 与以下组合四行,偶数行 #s 与以下两行结合,mod(10) line #s 与以下五行结合,跳过以'#'开头的行。
我在想我应该把它作为一个迭代器来实现,这样我就可以做到
这合理吗?如果是这样,如何最好地实施它?如果没有,如何最好地实施它?:)
谢谢