gpt4 book ai didi

scala for with () vs {} 括号 vs 花括号

转载 作者:行者123 更新时间:2023-12-01 00:20:27 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Why use curly braces over parentheses?

(3 个回答)


3年前关闭。




我见过 for 循环,带有括号 () 和花括号 {} 的理解,它们看起来非常相似。我一直以为它们是一样的,直到我写了这段代码:

版本 1:

def findChar(c: Char, levelVector: Vector[Vector[Char]]): Pos = {
val positions =
for {
row_index <- 0 to levelVector.length - 1
col_index <- 0 to levelVector(row_index).length - 1
if (levelVector(row_index)(col_index) == c)
} yield Pos(row_index, col_index)
if (positions.length == 1) positions.head
else throw new Exception(s"expected to find 1 match, but found ${positions.length} matches instead")
}

版本 2:
def findChar(c: Char, levelVector: Vector[Vector[Char]]): Pos = {
val positions =
for (
row_index <- 0 to levelVector.length - 1;
col_index <- 0 to levelVector(row_index).length - 1;
if (levelVector(row_index)(col_index) == c)
) yield Pos(row_index, col_index)
if (positions.length == 1) positions.head
else throw new Exception(s"expected to find 1 match, but found ${positions.length} matches instead")
}

版本 1 有花括号,而版本 2 有括号。但我也注意到第 2 版没有在箭头线末尾使用分号就无法编译。为什么是这样?!这两个fors是一回事吗?

最佳答案

不,它们不一样。
{}表示考虑 next line 对代码行进行分组(\n)
()也意味着分组,但不考虑下一行 (\n) 所以即使你有 \n在中间的所有代码 ()代码行被视为一行。

关于scala for with () vs {} 括号 vs 花括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49105235/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com