gpt4 book ai didi

string - drop,dropRight,take,takeRight vs 子字符串?

转载 作者:行者123 更新时间:2023-12-04 01:37:51 25 4
gpt4 key购买 nike

我在学习 Scala来自 Scala for the Impatient和第01章练习有问题

  1. What do the take, drop, takeRight, and dropRight string functions do? What advantage or disadvantage do they have over using substring?


我看到的唯一优势是 drop (和口味)不会扔 IndexOutOfBoundsException
例如:
scala> "Hello World!" dropRight 100
res26: String = ""

scala> "Hello World!" substring 100
java.lang.StringIndexOutOfBoundsException: String index out of range: -88
at java.lang.String.substring(String.java:1919)
... 33 elided

还有什么?内存效率?

最佳答案

主要好处是它允许您将 String 视为字符的顺序集合,就像任何其他 Seq 或 List 实例一样。

事实上,这些方法(以及其他重要的转换函数,如 map、flatMap 和 filter)并不是在 String 本身中实现的(实际上,它只是 Java String 类,而不是原生 Scala 类),而是在 StringOps 类中(它扩展了 StringLike -> ... -> SeqLike),并且隐式转换可确保在您需要访问这些方法时将 String 转换为 StringOps。

这意味着您可以将字符串传递给列表操作函数,该函数将接收一个 StringOps 实例,像处理任何其他 SeqLike 实体一样对其进行处理,而无需知道它实际上是一个字符串,并返回操作的结果,即StringOps 旨在以字符串的形式呈现给您。

如果您知道给定代码段中的实体是字符串,请随意使用特定于字符串的方法,但是这种隐式转换的可用性意味着您还可以利用字符串的“字符序列”性质来在方便的情况下,像对待任何其他列表一样对待它。

关于string - drop,dropRight,take,takeRight vs 子字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31711837/

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