作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在学习 Scala
来自 Scala for the Impatient和第01章练习有问题
- 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/
我在学习 Scala来自 Scala for the Impatient和第01章练习有问题 What do the take, drop, takeRight, and dropRight stri
我是一名优秀的程序员,十分优秀!