ソフトウェアエンジニアの日常の雑記

日々思ったことをまとめます

nim lang チュートリアル(4) (distinct,modules)

本家はこちら

つづき

distinct

これは他の言語でもあるのかな。理解するまで時間がかかったものだが、どうやらある型をベースに 異なる型を生成するもよう。

下記の例だとエラーになる

type  Dollar = distinct int

var  d: Dollar

echo d + 1   // Error: type mismatch: got (Dollar, int literal(12))

int型をベースにDollar型を生成している。 だが、演算子までは使えない

modules

nimはmodule機構がある

import

おなじみimport

import strutils

モジュール内の関数を読み込まないこともできる

import strutils expect isDigit

var a: string = "1"
echo isDigit(a)  // Error: undeclared identifier: 'isDigit'

コンパイルエラーになる

from statement

moduleの中からなにを使えるようにするか選択できる

from mymodule import x ,y ,z 
x()  # OK
from mymodule import nil
x()  # error
mymodule.x()  # OK

aliasも指定できる

from mymodule as m import nil
m.x()  # OK

include statement

モジュールのファイル分割時に使用するみたい

include fileA  , fileB , fileC