で関数を使用してインスタンスを地図方法を供給することにより、インスタンスを変換するためのScalaでの方法はあります私はScalaの
def withExclamation(string: String) = string + "!"
ローカルメソッド/機能を持っていると言いますか?文字列に感嘆符を追加したいとします。私は、インスタンス上のチェーン変換を書くときに(ローカル)関数を呼び出すことができるようにしたいと思い
val greeting = "Hello"
val loudGreeting = greeting.applyFunction(withExclamation) //result: "Hello!"
:ような何か。
編集:複数回答はこの可能性をプログラムする方法を示しているため、この機能は仲裁判断クラスには存在しないようです。私にとっては、この機能は非常に強力です。 Javaで私は文字列に操作の数を実行する場所を考えてみましょう:
appendExclamationMark(" Hello! ".trim().toUpperCase()); //"HELLO!"
操作の順序は、彼らが読んでどのように同じではありません。最後の操作であるappendExclamationMark
が最初に表示されます。現在、Javaで私は時々だろう:
Function.<String>identity()
.andThen(String::trim)
.andThen(String::toUpperCase)
.andThen(this::appendExclamationMark)
.apply(" Hello "); //"HELLO!"
最後の行私が書きたいでしょう:
" Hello "
.applyFunction(String::trim)
.applyFunction(String::toUpperCase)
.applyFunction(this::withExclamation); //"HELLO!"
明らかapplyFunction
関数の名前が(してください短い)何もすることができます。私は後方互換性がJavaのObject
にこれを持たない唯一の理由だと思った。 Any、AnyRefクラスに追加されていない技術的な理由はありますか?
'someInstance'とは何ですか?あなたは '変形する'が何をすると思いますか? 'toString'を呼び出しますか? –
修正済み:someInstanceはgreetingという名前にする必要があります –