0

このエラー メッセージが理解できないと思います。my_file.dart がすでに別のファイルによって供給されていたということですか。たとえば、my_main.dart には次のものが含まれています

#source('my_file.dart');

my_file.dart は他のファイルを入手できないのでしょうか? たとえば、my_file.dart で。

#source('my_other_file.dart'); // this can't be here?

class MyClass {
  Collection<MyOtherClass> myVariables;
}

問題は、my_file.dart で my_other_file.dart をソースする必要があるということです。そうしないと、my_other_file.dart のクラスの「そのようなタイプはありません」というエラーが発生するためです。しかし、そうすると、「このソースは #source ディレクティブを介して my_file.dart に含まれているため、それ自体にディレクティブを含めることはできません」というタイトル エラーが表示されます。

このメッセージを完全に誤解していますか? これらのエラーを停止するにはどうすればよいですか?

4

2 に答える 2

3

あなたの理解は正しいです。 #source-d ファイルは#source他のファイルにはできません。

Dart はライブラリをサポートしています。たとえば、サーバーで Dart を使用する場合は、dart:ioライブラリを使用する可能性が最も高くなり#import('dart:io')ます (コードを記述することによって)。ブラウザで Dart を使用する場合は、ほとんどの場合、dart:htmlライブラリを使用します。ライブラリは、dart:coreすべてのプログラムで暗黙的にインポートされます。

もちろん、独自のライブラリを作成することもできます。ほとんどの場合、ライブラリは複数のファイルにまたがります。この場合、これらのファイルの1 つがメインになります。ライブラリを宣言し ( を使用#library)、すべての依存関係を指定し ( を使用#import)、その他すべてのソース ファイルを指定します ( を使用#source)。他のすべてのファイル (これらの-d ファイル) には Dart コードのみが含まれ、これらの,およびディレクティブ#sourceを含めることはできません。次のようになります。#library#import#source

my_lib.dart:

#library('My Library');

#source('my_lib_impl.dart');

interface MyInterface default _MyClass {
  foo();
}

my_lib_impl.dart:

class _MyClass implements MyInterface {
  foo() {
    print("foo!");
  }
}

次に、このライブラリをプログラムで使用する場合 #importmy_lib.dartファイルを作成する必要があります。あなたはそれをしません #source

my_program.dart:

#import('my_lib.dart');

main() {
  new MyInterface().foo();
}

ここでは、ディレクティブmy_program.dartが含まれていない場合でも、#libraryディレクティブのように機能することに注意し#importてください#source。「エントリポイント」スクリプトでそれを行うことができます。

Dart でライブラリを使用する方法を説明しようとしましたが、これはあなたの質問に対する直接的な回答ではありませんが、役立つはずです。そうでない場合はお知らせください。詳しく調べてみます。

于 2012-06-04T07:18:54.457 に答える
2

Ladicekには完全な説明があります。あなたの特定の問題に関して:

my_other_file.dartのクラスに「そのようなタイプはありません」というエラーが表示されるため、my_other_file.dartをmy_file.dartで取得する必要があります。しかし、そうすると、「このソースは#sourceディレクティブを介してmy_file.dartに含まれているため、それ自体にディレクティブを含めることはできません」というタイトルエラーが発生します。

修正は次のとおりです。を入れる代わりに、を#source('my_other_file.dart')入れmy_file.dartますmy_main.dart

Dartチームの私たちは、これが言語の非常に紛らわしいコーナーの1つであることを認識しており、より良いものを考え出すように取り組んでいますが、時間がかかります。

于 2012-06-05T04:18:11.967 に答える