代码之家  ›  专栏  ›  技术社区  ›  coder25

字符串与mkstring和string interpolate的连接

  •  0
  • coder25  · 技术社区  · 6 年前

    我想用分隔符连接字符串 "/" 是的。

    val s1 ="a"
    val s2 ="b"
    val s3 ="c"
    

    选项1

    s"$s1/$s2/$s3"
    

    选项2

    Seq(s1,s2,s3).mkString("/")
    

    有谁能帮忙了解一下哪种方法更好吗

    1 回复  |  直到 6 年前
        1
  •  1
  •   James Whiteley    6 年前

    mkString 当然更整洁,更具扩展性。

    假设您有许多值:

    val a = 1
    val b = 2
    val c = 3 //etc
    

    两种方法都可以完成相同的工作,并且在写出时都看起来比较整洁:

    s"$a/$b/$c"
    Seq(a, b, c).mkString("/")
    

    然而,当您获得越来越多的值时,您将看到 Mkstring公司 选择是如此容易管理。假设你有一堆值(在下面的例子中用数字表示)。把它们全部写出来看起来很难看,而且你很容易出错(漏掉一个值,忘记一个斜线,等等)。把它们放进 Mkstring公司 块使您的代码更整洁、更易于管理(在我看来):

    "1/2/3/4/5/6/7/8/9/10/11/12/13/14/15/16/17/18/19/20/21/22/23/24/25/26/27/28/29/30/31/32/33/34/35/36/37" // etc
    
    val seq = 1 to 100
    seq.mkString("/")
    

    上面的例子可能看起来微不足道,但通常您不知道您的值序列中到底是什么,所以 Mkstring公司 在我看来,这更符合未来,更整洁。不管他们是否做同样的事情,在我看来,保持代码可读性是很重要的。”这里有些东西。现在我要用它们做一条线,用斜线把它们分开,这比“这是一条长串,上面有斜线之类的东西”更容易理解。

    在现实生活中我就是这样做的。我不知道这两种技术对性能的影响,因为我以前从来没有连接过大型字符串,但我猜如何处理它完全取决于您,如果您的数据像您的示例中那样小和琐碎,我认为这并不重要。也许我只是不喜欢看 $ 到处…