私はこの言語を初めて使っています。 (最初の引数は、私の新しいタイプのインスタンスである)メソッドで新しいオブジェクト型をコンパイルしようとすると、コンパイラは次のように私に警告:Nimの基本的な方法は何ですか?
Warning: use {.base.} for base methods; baseless methods are deprecated [UseBase]
私はこの言語を初めて使っています。 (最初の引数は、私の新しいタイプのインスタンスである)メソッドで新しいオブジェクト型をコンパイルしようとすると、コンパイラは次のように私に警告:Nimの基本的な方法は何ですか?
Warning: use {.base.} for base methods; baseless methods are deprecated [UseBase]
基本法は、基本クラスであるものに対応します単一ディスパッチ言語でのメソッド。基本メソッドは、1つまたは複数のクラスに対するメソッドの最も一般的なアプリケーションです。単一の引数でディスパッチする場合、基本メソッドは、そのメソッドを含む基本クラスである型に関連付けられている必要があります。
この警告は、派生型に対してメソッドを定義するときに発生します。つまり、基本型からの動作をオーバーライドしていると思っていますが、メソッドのシグネチャが間違っていて、したがって警告です。
例えば、
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) =
...