问题标签 [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-comprehension、Try 和序列
假设你有一堆方法:
并且您想要理解:
当然这不会编译,因为在这种情况下 Seq 不能与 Try 一起使用。
任何人都有一个很好的解决方案,如何在不将其分成单独的两个 for 的情况下编写干净的代码?
我已经第三次遇到这个语法问题,并认为是时候问这个问题了。
scala - 将 flatMap 转换为便于理解
给定foo
和bar
:
我怎样才能把它转换flatMap
成一个for-comprehension
?
请注意,我提供了以上内容作为Using for-comprehension, Try and sequences in Scala的答案,但我无法将其转换为for-comphension
.
scala - Scala 在 for 循环外将集合类型变量初始化为 null 并将某些方法的返回值分配给循环内的变量
我是使用 Scala 的新手。
我有一个Vector
包含Person
对象的 Scala,我需要在这些对象上循环并将 Vector 的每个元素传递给personCollector
返回值也是 Vector 的方法。for
从循环下面的Scala REPL 输出中可以看出,它打印了personCollector
三次返回的向量,这是因为people
向量包含三个条目。但是我想只打印personCollector
一次返回的向量,即在for 循环迭代结束之后。
在Java中,我可以按照以下方式进行:
但是我无法在 Scala 中执行上述操作。下面是我的 Scala 代码。
谢谢。
scala - Scala 用于理解 - 使用复杂过滤器生成
我正在尝试在 Scala 中构建理解,但是当我尝试使用更复杂的过滤器时遇到了一些问题。
我知道理解过滤的基本知识:
但是,我想构建一个具有更复杂过滤语句的 for comprehension。例如,这是我正在尝试做的说明性版本:
基本上,如果你想用一些更复杂的要求做一个过滤器,这会变得很尴尬,因为 for 理解不允许在过滤器语句中声明 val,否则你必须将所有这些都放在一行中。
另一种选择是根本不使用过滤器机制,只产生 Some(element) 或 None,并最终得到一个 Option[elementType] 列表。但是,在这种情况下,我不想使用 Optional 类型。
当务之急,我只是创建一个可变列表,并且仅在满足我的条件时才附加到列表中,但我想看看如何以更多的声明方式来做到这一点(不是所有的声明方式,但我我还在学习!)。
任何关于好的声明性方法的建议都会非常有帮助。
scala - Scala for-comprehension for orElse 而不是 flatMap
我对for
理解和flatMap
选项非常熟悉。
所以我知道你可以做类似的事情
Some(z)
如果 for 理解中没有任何内容,这给了我is None
,因为它对flatMap
每个语句都执行 a 。
但实际上我正在寻找相反的东西。我想遍历for
理解,只要一切都是None
,就像orElse
一个for
理解。
例如:
有没有这样的事情,或者最好的方法是什么?
提前致谢!
scala - 如何在理解中等待 Scala Futures 的结果
我对以下代码有疑问。我希望在所有 groundCoffee、heaterWater、frothedMilk 方法完成后触发“combine”方法。它们将被同时触发。所有 4 种方法磨碎、加热水、泡沫牛奶、冲泡都是使用未来同时执行的。
当我执行上述方法时,我得到的输出如下
并且程序在此之后退出。当我试图学习期货时,我从一个网站上得到了这个例子。如何让程序等待,以便在所有期货返回后触发组合方法?
scala - 用于函数创建的理解和数量
最近我接受了 Scala 开发人员职位的面试。我被问到这样的问题
问题是:A 或 B 哪个实现更有效?
我们都知道for 推导式可以翻译成
B 可以写成matrix.foreach(row => row.foreach(print _))
假设正确答案是 B,因为 A 将创建print
100 倍的函数。
我检查了语言规范,但仍然无法理解答案。有人可以向我解释一下吗?
scala - Scala 的元组为 Right
假设我有以下代码:
当我在 REPL 中评估它时,我得到
:13: 错误:构造函数无法实例化为预期类型;找到:(T1,T2)需要:scala.util.Either[Nothing,(Double,Double)](a,b)<-a.right ^:14:错误:未找到:值a}产生a + b ^
为什么我有这样的错误?我不能对来自 Either's Right 的元组进行模式匹配吗?
scala - Scala:帮助我理解这段代码中的理解和案例类
我正在尝试围绕 Scala 进行研究,到目前为止,我发现它非常具有挑战性。我找到了这个库(https://github.com/snowplow/scala-maxmind-geoip),我过去使用 Python 来查找基于 IP 地址的国家/地区等内容。
所以这个例子很简单
并且文档显示
getLocation(ip) 方法返回一个 IpLocation 案例类
那么,如果它是一个案例类,为什么这不起作用呢?
毕竟我能做到
感谢您的时间!
scala - 为什么这个简单的 Scala 理解不执行期货?
我一直在弄清楚为什么这不起作用:
我期待这会打印“abc”,但实际上什么也没发生。