Phoenix アプリケーションからコンソールを使用する場合はiex
、次のようになります。
iex -S mix phx.server
またはSystem
などの関数を呼び出すことができないようです。これは、名前空間をモジュールの前に強制するためです。その名前空間を持つモジュールが存在しないため、エラーが発生します。System.stop(1)
System.halt(1)
** (UndefinedFunctionError) function MyApp.SomeNamespace.System.stop/1 is undefined or private
このコア モジュールの先頭に名前空間を追加するのはなぜですか? のようなモジュールではこのエラーが発生するのに、 、、またはSystem
のようなモジュールでは発生しないのはなぜですか?Enum
List
Map
また、iex
アプリケーション ソースの外部で使用するとSystem.any_function
、期待どおりに呼び出すことができます。
さらに調べてみると、 を呼び出すことで動作させることができますElixir.System.stop/1
。System
モジュールの先頭Elixir.
に を付ける必要があるのに、他の Elixir モジュールでは必要がないのはなぜですか?
アプリケーション コード内で、エイリアスや名前空間を必要とせずにSystem.backtrace
or などを呼び出します。System.get_env
また、アプリケーションで名前が付けられたモジュールもありませんSystem
(つまり、モジュールが定義されていないMyapp.System
か、類似したモジュールが定義されていません)。