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

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

发布时间:2020-12-16 19:10:53 所属栏目:安全 来源:网络整理
导读:Scala中是否有替代的“List”语法? 是否可以定义一个名为'[‘和’]’的aditional类/类型/运算符*? 我知道’方括号’用于表示类型,但它们对于声明列表的重复性任务是完美的. 一个 ‘;’要么 ‘?’作为最后的资源,也会很好. 谢谢 实验值: 经过多次搜索,我
Scala中是否有替代的“List”语法?
是否可以定义一个名为'[‘和’]’的aditional类/类型/运算符*?

我知道’方括号’用于表示类型,但它们对于声明列表的重复性任务是完美的.

一个 ‘;’要么 ‘?’作为最后的资源,也会很好.

谢谢

实验值:
经过多次搜索,我找到的唯一选择是使用’cons’:

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]) = {
    12
  }
}

解决方法

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

我建议你学习使用:: notation(并习惯连续两次输入:symbol),因为它确实使列表操作在视觉上清晰,而且它是一个很好的语法提示,列表很奇怪,因为你放东西在列表的头上.

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

List(1,2,3,4)

是1到4之间的数字列表.如果您只能键入L而不是列表,该怎么办?事实证明,你可以,因为这不是一个花哨的构造函数或静态方法,而是类List的单例伴随对象.所以你只是

val L = List
L(1,4)

而你只是一个比你的括号建议更糟糕的人物.

(编辑:李大同)

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

    推荐文章
      热点阅读