LoginSignup
13
7

More than 5 years have passed since last update.

Nim入門 (1)

Last updated at Posted at 2017-12-21

Nim入門

はじめに

Nimの入門記事があまりにもないので、世の中の業務で使ってもらうためには日本語ドキュメントが足りないと感じたので、自分で翻訳記事を書くことにしました。

実行環境

  • macOS High Sierra v10.3
  • Docker v17.09.0-ce
  • Docker Compose v1.16.1
  • Nim v0.17.2
  • nimble v0.8.8

インストール

インストール記事は公式を参照のこと。

https://nim-lang.org/install.html

Dockerでの作成方法については、記事を書いたのでそちらを参照して下さい。
<>

主にマニュアルをベースに解説していきます。

https://nim-lang.org/docs/manual.html

字句解析(Lexical Analysis)

文字コード

ソースファイルのエンコードは全てUTF-8でお願いします。
それ以外はサポートしてません。

コメント

コメントはこんな感じ。

# コメントを書く

複数行にわたってコメントを書く場合はこんな感じ。


# 複数行コメントは
このようにして書いてくれれば
問題なくかけます。 #

Stringのリテラル

文字列リテラルは、二重引用符(ダブルコーテーション)で区切ることができ、エスケープシーケンスを含めることができます。

ダブルコーテーションで区切ればStringリテラルになるよ。

エスケープ 意味
\n 改行
\r, \c 復帰改行
\l 改行
\f 改ページ
\t タブ
\v 垂直タブ
\ バックスラッシュ
\" ダブルコーテーション
\' シングルコーテーション
\ '0'..'9'+ 小数点がひつようなdecimal文字
\a アラート
\b バックスペース
\e エスケープ[ESC]
\x HH 16進数の文字必ず2桁入力

三重Stringリテラル

""""長い日本語文字列とダブルコーテーション""""

出力

"長い日本語文字列とダブルコーテーション"

エスケープを無視できるStringリテラル

例えばPathの表記中にバックスラッシュと「t」が入ってしまった場合に、タブになってしまう。
それを回避するために「r」を使う。

var f = openFile(r"C:\texts\text.txt")

以下のように利用した場合はダブルコーテーションが1つ残る。

r"a""b"

結果

a"b

Characterのリテラル

文字リテラルは、一重引用符(シングルコーテーション)で区切ることができ、エスケープシーケンスを含めることができます。

シングルコーテーションで区切ればCharacterリテラルになるよ。

エスケープ 意味
\r, \c 復帰改行
\l 改行
\f 改ページ
\t タブ
\v 垂直タブ
\ バックスラッシュ
\" ダブルコーテーション
\' シングルコーテーション
\ '0'..'9'+ 小数点がひつようなdecimal文字
\a アラート
\b バックスペース
\e エスケープ[ESC]
\x HH 16進数の文字必ず2桁入力

Numerical 定数

数値定数は読みやすくするためにアンダースコアを含めることができます。

let num = 10_000_000

整数および浮動小数点数のリテラルは、10進数(接頭辞なし)、バイナリ(接頭辞0b)、8進数(接頭辞0または0c)および16進数(接頭辞0x)の表記で指定できる。

各数値型のリテラルが定義されおり自動で型が決定しますが、曖昧なリテラルについては、アポストロフィ( '' ')で始まる接尾辞は型接尾辞をつけることでわかりやすくすることができます。

型接尾辞を持たないリテラルは、リテラルがドットを含んでいなければint型であるか、E | e型でなければfloat型です。表記上の便宜のために、型接尾辞のアポストロフィは、あいまいでない場合はなくても大丈夫です。

(型接尾辞付きの16進浮動小数点リテラルのみがあいまいである可能性があります)

let
  x = 0     # x は ``int``
  y = 0'i8  # y は ``int8``
  z = 0'i64 # z は ``int64``
  u = 0'u   # u は ``unit``
型接尾辞
'i8 int8
'i16 int16
'i32 int32
'i64 int64
'u uint
'u8 uint8
'u16 uint16
'u32 uint32
'u64 uint64
'f float32
'd float64
'f32 float32
'f64 float64
'f128 float128

演算子

演算子は以下のようなものが使えます。
またNimではユーザ定義によって演算子をつくることができます。

=     +     -     *     /     <     >
@     $     ~     &     %     |
!     ?     ^     .     :     \

その他

`   (     )     {     }     [     ]     ,  ;   [.    .]  {.   .}  (.  .)
13
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
7