gpt4 book ai didi

list - Scala:替代列表语法(如果可能,使用方括号)

转载 作者:行者123 更新时间:2023-12-04 13:12:15 24 4
gpt4 key购买 nike

Scala 中是否有替代的“列表”语法?
是否可以定义一个名为“[”和“]”的附加类/类型/运算符*?

我知道“方括号”用于表示类型,但它们非常适合声明列表的重复任务。

一种 ';'或者 '?'作为最后的资源也很好。

谢谢

观察:
经过大量搜索,我找到的唯一替代方法是使用“缺点”:

val list = 1 :: 2 :: 3 :: Nil

但它根本不会减少任何按键输入。
  • 我仍在 Scala 中学习这些东西

  • 编辑:
    只是为了澄清:在我的情况下,性能不是优先事项。是的,转变是不受欢迎的。 :P
    幕后动机:我喜欢 Haskell 风格,但不能直接与 Java 一起使用。

    编辑2:
    基于两个 Rex Kerr 解决方案的最终解决方案

    实现对象类型:
    package a
    object Types {
    type \[z] = List[z]
    implicit def make_lists[A](z: A) = new ListMaker(z)

    class ListMaker[A](a0: A) {
    private[this] val buffer = List.newBuilder[A]
    buffer += a0
    def \(z: A) = {
    buffer += z;
    this
    }
    def \\ = buffer.result
    }
    }

    使用对象类型:
    package a
    import a.Types._

    object Whatever {
    def listInListOut (l: \[Int]) = {
    1\2\\
    }
    }

    最佳答案

    []是 Scala 中用于类型注释的保留符号。您不能将它们用于列表。 ;保留用于行尾。您可以使用 ?在很多情况下,但这会很尴尬。

    我建议您学习使用 ::符号(并习惯于连续两次快速键入 : 符号)因为它确实使列表操作在视觉上清晰,而且它是一个很好的句法提醒,列表很奇怪,因为你把东西放在了列表的头部。

    但是,如果您不能容忍这一点,那么最好的选择可能是定义一个单字母列表符号。例如,

    List(1,2,3,4)

    是一个从 1 到 4 的数字列表。如果你只输入 L 会怎样?而不是 List ?事实证明你可以,因为这不是一个花哨的构造函数或静态方法,而是类 List 的单例伴侣对象。 .所以你只要
    val L = List
    L(1,2,3,4)

    而你只是比你的括号建议差一个字符。

    关于list - Scala:替代列表语法(如果可能,使用方括号),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6171955/

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