データ型
従来、Unix シェルコマンドは文字列テキストを通じて互いに通信してきました。あるコマンドは標準出力(しばしば'stdout'と略されます)を介してテキストを出力し、他方のコマンドは標準入力(または'stdin')を介してテキストを読み込みます。このようにして、2つのコマンドは通信できます。
この種の通信は文字列ベースと考えることができます。
Nu はコマンドに対してこのアプローチを採用しつつ、他の種類のデータを扱えるよう拡張しています。現在、Nu はシンプルなデータと構造化されたデータ、2つの種類をサポートしています。
シンプルなデータ
多くのプログラミング言語と同様に、Nu はシンプルなデータと構造化されたデータを用いてデータをモデル化します。シンプルなデータ型には、整数、浮動小数点、文字列、真偽値、日付、およびパスが含まれます。ファイルサイズのための特別な型もこれに含まれます。
整数
整数(または丸めた数)。例として、1,5,および 100 があります。
浮動小数点
浮動小数点は小数部を含む数です。例として、1.5、2.0、および 15.333 があります。
文字列
文字列はテキストを表す基本的な方法です。文字列はダブルクォートを使って表されます。例として、"Fred", "myname.txt", and "Lynchburg, VA"があります。
Nu の文字列はデフォルトで Unicode に対応しているため UTF-8 のテキストを簡単に渡すことができます。
Lines
Lines は OS に依存した行末をもつ文字列です。使用される場合は、OS 固有の行末が使用されます。
Column paths
Column paths はテーブルにおける特定のサブテーブル、列、行、またはセルへのパスです。
パターン
"glob"パターンと呼ばれたりもするパターンはシェルでよく利用されるファイル名のマッチング方法です。*
は何にでもマッチし、?
は一文字にマッチすることを表しています。
例) ls test*
におけるtest*
がパターンです。
真偽値
真偽値は真か偽かの状態をとります。しばしば比較の結果を表すために使われます。
真偽値の2つの値は、$true
と$false
です。
日付
日付と時間は日付型のデータに一緒に保持されます。システムで利用される日付データはタイムゾーンをもち、デフォルトでは UTC タイムゾーンが使用されます。
Duration
Duration は時間の長さを表します。1 秒、5 週間、1 年はすべて Duration の値です。
例) 1wk
は 1 週間を表す Duration です。
この表は現在サポートされているすべての Duration を示しています。
Duration | Length |
---|---|
1sec | one second |
1min | one minute |
1hr | one hour |
1day | one day |
1wk | one week |
Ranges
値の範囲を表すこともできます。大抵は、開始と終了の間の数値を表すために利用します。
例) ls | range 1..4
パス
パスは、特定の OS でファイルパスを表すプラットフォームに依存しない方法です。例として、/usr/bin
やC:\Users\file.txt
があげられます。
バイト
ファイルサイズはバイトと呼ばれる特別な整数型で保持されます。例として、100
, 15kb
、100mb
があります。
バイナリデータ
バイナリデータは、画像ファイルのデータのように、生のバイトの集まりです。
構造化データ
構造化データはシンプルなデータから作られます。例えば、構造化データは、複数の整数を表す方法を提供します。現在サポートされている構造化データは次のとおりです。rows, lists, そして blocks です。
Rows
row データ型は表の1行のデータで見えるものを表しています。異なる要素のデータをもち、データにはそれぞれ列名が与えられます。
Lists
Lists は一つ以上の値を保持できます。単純な値だけでなく、rows も保持することができます。rows の lists はしばしばテーブルと呼ばれます。
> echo [sam fred george]
───┬────────
0 │ sam
1 │ fred
2 │ george
───┴────────
Blocks
Blocks は Nu のコードブロックを表します。例えば、each { echo $it }
というコマンドでは、{ echo $it }
が block になります。 block はデータの行ごとに実行するコードを表すのに便利です。