String 可以在Scala中隐藏方法吗?
昨晚,在一个令人不快的时刻,我们庆祝了第五次跟踪由于String 可以在Scala中隐藏方法吗?,string,scala,split,String,Scala,Split,昨晚,在一个令人不快的时刻,我们庆祝了第五次跟踪由于String.split行为引起的bug,例如在 output split '\n' map processRow 问题是,如果output为空,split将给您一行,即空字符串,processRow可能不喜欢它 使用split0方法扩充String很容易(我们已经有了),如果字符串为空,它将返回空数组,但是我们一直忘记split具有这种行为,它不是mkString的正确逆。哦,这只狗咬了五口就够了——我们想隐藏split,强迫自己在spli
String.split
行为引起的bug,例如在
output split '\n' map processRow
问题是,如果output
为空,split
将给您一行,即空字符串,processRow
可能不喜欢它
使用
split0
方法扩充String
很容易(我们已经有了),如果字符串为空,它将返回空数组,但是我们一直忘记split
具有这种行为,它不是mkString
的正确逆。哦,这只狗咬了五口就够了——我们想隐藏split
,强迫自己在split0
和split1
之间做出选择。这在Scala中可能吗?正如您所说的processRow
不喜欢空字符串,您可以这样做
output split '\n' filter(_.nonEmpty) map processRow
在
scala.collection.immutable.StringLike
中还有其他方便的函数,例如StringLike.stripLineEnd
,尽管这只会去除尾随的行尾字符。简短的回答是否。processRow
可能应该接受一个不是String
的参数,并让split0
和split1
方法返回该类型,而不是Array[String]
。这将是一种强迫自己不要使用它的方法。另一个简短的答案是,使用“”。行
在行尾拆分。我感谢所有建议。要明确的是,这只是分裂如何折磨我们的一个例子。我不是在寻找一种方法来修复这个bug;将split更改为split0可以修复此问题。我正在寻找一种方法来掩盖这个漏洞,这样我们就不会再掉进洞里了。还有一些样式检查器,这将使API隔离。