Env
💡 お知らせ: このドキュメントはAIによって翻訳されています。表現に違和感がある場合は、原文(英語)を参照するか、翻訳にご協力ください。
Flix は、環境変数、システムプロパティ、およびプラットフォーム情報にアクセスするためのライブラリエフェクト(Library effect)として Env を提供しています。Env エフェクトにはデフォルトハンドラがあるため、main の中で明示的に runWithIO を呼び出す必要はありません。主要なモジュールは Sys.Env です。
Env エフェクト
Env エフェクトは、プログラムの環境を読み取るための操作を提供します:
pub eff Env {
/// コマンドラインからプログラムに渡された引数を返します。
def getArgs(): List[String]
/// 現在のシステム環境の Map を返します。
def getEnv(): Map[String, String]
/// 指定された環境変数の値を返します。
def getVar(name: String): Option[String]
/// 名前で指定されたシステムプロパティを返します。
def getProp(name: String): Option[String]
/// オペレーティングシステム名を返します。
def getOsName(): Option[String]
/// オペレーティングシステムのアーキテクチャを返します。
def getOsArch(): Option[String]
/// オペレーティングシステムのバージョンを返します。
def getOsVersion(): Option[String]
/// ファイル区切り文字を返します。
def getFileSeparator(): String
/// パス区切り文字を返します。
def getPathSeparator(): String
/// システムの行区切り文字を返します。
def getLineSeparator(): String
/// ユーザーの現在の作業ディレクトリを返します。
def getCurrentWorkingDirectory(): Option[String]
/// デフォルトの一時ファイルのパスを返します。
def getTemporaryDirectory(): Option[String]
/// ユーザーのアカウント名を返します。
def getUserName(): Option[String]
/// ユーザーのホームディレクトリを返します。
def getUserHomeDirectory(): Option[String]
/// JVM が利用できる仮想プロセッサ数を返します。
def getVirtualProcessors(): Int32
}
ディレクトリと OS 情報
Env のもっとも簡単な使い方は、現在のディレクトリ、ホームディレクトリ、あるいはオペレーティングシステムを問い合わせることです:
use Sys.Env
def main(): Unit \ { Env, IO } =
let home = Env.getUserHomeDirectory();
println("Home: ${home}");
let cwd = Env.getCurrentWorkingDirectory();
println("CWD: ${cwd}");
let os = Env.getOsName();
println("OS: ${os}")
環境変数
単一の環境変数を読み取るには getVar を、すべての環境変数を Map として取得するには getEnv を使います:
use Sys.Env
def main(): Unit \ { Env, IO } =
let path = Env.getVar("PATH");
println("PATH: ${path}");
let all = Env.getEnv();
println("Total env vars: ${Map.size(all)}")
システム情報
Env エフェクトは、OS のアーキテクチャや利用可能なプロセッサ数といったプラットフォームの詳細情報も公開しています:
use Sys.Env
def main(): Unit \ { Env, IO } =
let name = Env.getOsName();
let arch = Env.getOsArch();
let version = Env.getOsVersion();
let cpus = Env.getVirtualProcessors();
println("OS: ${name}");
println("Arch: ${arch}");
println("Ver: ${version}");
println("CPUs: ${cpus}")