2017-03-13 10 views
3

私はこの言語を初めて使っています。 (最初の引数は、私の新しいタイプのインスタンスである)メソッドで新しいオブジェクト型をコンパイルしようとすると、コンパイラは次のように私に警告:Nimの基本的な方法は何ですか?

Warning: use {.base.} for base methods; baseless methods are deprecated [UseBase] 

答えて

1

基本法は、基本クラスであるものに対応します単一ディスパッチ言語でのメソッド。基本メソッドは、1つまたは複数のクラスに対するメソッドの最も一般的なアプリケーションです。単一の引数でディスパッチする場合、基本メソッドは、そのメソッドを含む基本クラスである型に関連付けられている必要があります。

0

この警告は、派生型に対してメソッドを定義するときに発生します。つまり、基本型からの動作をオーバーライドしていると思っていますが、メソッドのシグネチャが間違っていて、したがって警告です。

例えば、

type 
    Base = ref object of RootObj 
    Derived = ref object of Base 

method doSomething(b: Base, n: int) {.base.} = 
    ... 

# !!! This method gets warning because it's not overriding the base 
# !!! doSomething method due to different parameter types 
method doSomething(d: Derived, n: string) = 
    ... 
関連する問題