2011-11-08 10 views
0

関数をクラスのメンバーとして使用する方法を理解しようとしていますが、正しい構文を理解できません。私は、コンパイルエラーを取得:関数をクラスメソッドとして使用する

test.scala:11: error: missing arguments for method extra in class RichString; 
follow this method with `_' if you want to treat it as a partially applied function 
println("This is".extra); 

は、どのように私はクラスRichStringの外で定義された関数としてextraを維持し、Stringクラスを拡張するためにそれを使用するのでしょうか?

ありがとうございました。

test.scala:

class RichString(a: String) { 
    def extra(a: String):String 
} 

def extra(a: String): String = { 
    return a+" Extra!"; 
} 

implicit def string2Rich(s: String) = new RichString(s); 

println("This is".extra); 

答えて

1

はこれが何をしたいですか?

scala> class RichString(a: String) { 
    | def extra = a + "extra" 
    | } 
defined class RichString 

scala> implicit def enrichString(s: String) = new RichString(s) 
enrichString: (s: String)RichString 

scala> println("this is".extra) 
this isextra 
+0

私は、「余分」が「リッチストリング」クラスの外でどのように動作するかの論理を保つことを望んでいました。私の例では、 'extra'のロジックはクラス外で定義されています。試してくれてありがとう。 – Jeremiah

+0

@Jeremiahしかし、どのような方法でもクラスやオブジェクトのどこかに定義する必要があります。 –

+0

@ matthew-farwell私は、クラス(C++のような)で関数を宣言することは可能だと仮定していましたが、クラスの外で関数の定義を保持しています...間違っていましたか? – Jeremiah

関連する問題