我有下面的一段代码,它正在打印:一些(600)作为输出。
不知道加法是如何在“for”循环中发生的。
在下面,它混淆了“for”循环的代码块内发生的事情以及变量“y”的计算方式。有人能帮忙吗?
object TestObject extends App
{
def toInt(s: String): Option[Int] = {
try
{
Some(Integer.parseInt(s.trim))
}
catch
{
case e: Exception => None
}
}
val y = for
{
a <- toInt("100")
b <- toInt("200")
c <- toInt("300")
} yield a + b + c
println(y)
}
从for循环内部调用toInt方法,该方法返回一个Option[Int]。现在for循环所做的是简单地打开Option容器并为变量
a分配值为100。在类似的行中,变量b和c被分配值为200和300。
最后,yield 语句将值 a、b 和 c 相加,并将其放回 Option 容器中。
请参考https://docs.scala-lang.org/tutorials/FAQ/yield.html和https://alvinalexander . com/Scala/Scala-for-loop-yield-examples-yield-tutorial
在Scala中,这被称为“理解的方法”。
< code>toInt将值包装在由< code >提取的< code>Option中
如果Option
之一是无
,则结果将是无
< code>yield总是返回它的最后一条语句,在您的情况下:< code>a b c
所以结果是Some(600)。
参见这里的文档:https://docs.scala-lang.org/tour/for-comprehensions.html
我想做一个小程序,从数组中删除一些不需要的字符,如/n,/t,问题是它在部分工作。第三届和第五届): 程序: 它显示了这个结果: 一些不需要的字符被删除,但不是全部。。。指数3和5。 下面是将html标记的字符串内容逐字符放入数组“caractereinside”的主要代码: 结果是: 如果我将"var ContenuesPacemenu"转换成一个规则数组,就像这样,它的工作原理是: 我明白了:
此代码来自C primer p.446: 我不明白带两对括号的返回表达式。这本书前面没有类似的语法。
精心挑选的有用的 JavaScript 代码片段,你可以在 30 秒或更短的时间内理解。
我正在编写一个计算e^x值的方法。我在python中实现它的方式如下。 这将很好地返回e^x的值。但是,当我尝试在c#中实现相同的方法时,它没有输出与python中相同的值。以下是c#中的实现。 起初,这段代码的输出是一个无穷大符号。为了解决这个问题,我只是减少了循环运行的次数。在c#中,循环只运行10次,代码的输出非常接近于python中循环运行100次的输出。我的问题是,在不同的编程语言中,两
考虑下面的代码片段 在代码片段1中,方法m1()在抛出声明中有SQLExctive,但它实际上抛出了类型为的引用变量。我在这里期待编译器出错,因为