gpt4 book ai didi

scala - 您在哪里拆分长Scala函数签名?

转载 作者:行者123 更新时间:2023-12-03 12:14:14 25 4
gpt4 key购买 nike

像这样的定义

def foo(x: Int) = x + 1

不错,很短,看上去很漂亮,但是当签名本身变得不舒服时,
def foo[T <: Token[T]](x: ArrayBuffer[T], y: T => ArrayBuffer[() => T]): (T, T, BigDecimal) = {
// ...
}

我不知道在哪里拆分。我发现以下所有内容看起来很尴尬:
def foo(
x: Int,
y: Int
): Int = {
// ...
}

def foo(
x: Int,
y: Int
): Int =
{
// ...
}

def foo(
x: Int,
y: Int
): Int
= {
// ...
}

def foo(
x: Int,
y: Int
):
Int = {
// ...
}

但是,考虑到我将不得不习惯其中之一,这会给我的队友带来最少的烦恼吗?

最佳答案

Scala style guide对此无话可说。实际上,它建议使用参数较少的方法:-)。

对于函数调用,建议不要拆分,以使随后的每一行都与第一个括号对齐:

foo(someVeryLongFieldName,
andAnotherVeryLongFieldName,
"this is a string",
3.1415)

就您个人而言,我会按照“保持相似的事物在一起”的规则进行拆分:
def foo[T <: Token[T]]
(x: ArrayBuffer[T], y: T => ArrayBuffer[() => T])
: (T, T, BigDecimal) = {
// ...
}

因此,参数在一行上,返回类型在一行上,类型限制在一行上。

关于scala - 您在哪里拆分长Scala函数签名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8047333/

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