Документация гласит: «Если n отрицательно, не удаляйте никакие элементы». Я предполагаю, что причина в том, что в некоторых случаях это позволяет вам пропустить математику. Например, допустим, вы хотите удалить с начала две строки, чтобы они имели одинаковую длину. Вы могли бы сделать:
def makeSameLength(s1: String, s2: String): (String, String) = {
(s1.drop(s1.size-s2.size), s2.drop(s2.size-s1.size))
}
Случаи, подобные этому, когда вам приходится отбрасывать какое-то переменное число элементов из последовательности, часто встречаются, и обычно, если математика работает с отрицательным числом, это означает, что вы просто не хотите ничего отбрасывать. Таким образом, это избавляет вас от необходимости добавлять какую-то условную логику или включать max(x, 0)
или аналогичный.
Я согласен, что это немного удивительно, но я понимаю, почему это может быть полезно.