加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

你在哪里拆分长Scala功能签名?

发布时间:2020-12-16 09:19:47 所属栏目:安全 来源:网络整理
导读:一个定义就像 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) = 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,BigDecimal) = {
  // ...
}

所以参数在一行上,返回类型在一行上,类型限制在一行上.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读