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隔离。