Мне просто любопытно.
Я пытаюсь сделать строки сопоставления с образцом в Scala способом Haskell (как список символов)
В качестве примера, эта функция удаляет первый символ "/" в строке:
import scala.language.implicitConversions
implicit def stringToChars(s: String): List[Char] = s.toCharArray.toList
implicit def charsToString(a: List[Char]): String = a.mkString
def filterFirstSlash: Function[List[Char], String] = {
case Nil => ""
case '/' :: Nil => ""
case '/' :: xs => xs
case xs => xs
}
использование:
println(filterFirstSlash("/test"))
Можно ли удалить косую черту с помощью сопоставления с шаблоном?Это хорошо, чтобы сделать это таким образом?
upd
это удалит все записи в голове и хвосте:
def removeAllSlashes: Function[List[Char], String] = {
case Nil => ""
case '/' :: xs => removeAllSlashes(xs)
case xs :+ '/' => removeAllSlashes(xs)
case xs => xs
}
это будетудалить только первые записи:
def removeFirstSlash: Function[List[Char], String] = {
case Nil => ""
case ('/' :: xs) :+ '/' => xs
case '/' :: xs => xs
case xs :+ '/' => xs
case xs => xs
}
ps Не принимайте это всерьез.Это просто для удовольствия.Спасибо всем, кто участвовал в обсуждении.