1
最初のコードは、Webからの練習問題の最初の草案です。すべてのテストに合格しますが、重複したコードがたくさんあります。 私は関数を抽象化していき、2番目の項目を取得しましたが、これは同じように動作するはずですが、(それはちょっとしたことですが)間違っていますか?スカラのコード抽象化
1)
class Anagram(strg: String) {
def matches(words: Seq[String]): Seq[String] = {
def stylisticDifference(things: Seq[String], text: String): Seq[String] = {
things.filter(w => w.toLowerCase == text.toLowerCase)
}
def essensialSimlitude(things: Seq[String], text: String):Seq[String] = {
things.filter(w => w.toLowerCase.sorted == text.toLowerCase.sorted)
}
essensialSimlitude(words,strg) diff stylisticDifference(words,strg)
}
}
2)
class Anagram(strg: String) {
def matches(words: Seq[String]):Seq[String] = {
def answer(things: Seq[String], text: String, fn: String => String): Seq[String] = {
things.filter(w => fn(w.toLowerCase) == fn(text.toLowerCase))
}
val stringSort = (s: String) => s.sorted
answer(words,strg, identity) diff answer(words, strg, stringSort)
}
}
2番目のもので何が失敗していますか?それは何をすべきか、代わりに何をしていますか? – puhlen
は 'w => fn(w.toLowerCase)== fn(text.toLowerCase)'を 'w => fn(w)に変更します.toLowerCase == fn(テキスト).toLowerCase'。 '小文字のソート '結果は'小文字のソート 'とは異なります –