Skip to content

Google Colaboratory+Nimで変数宣言について勉強します.

Google Colaboratory(以下Google Colab)は、Google社が無料で提供している機械学習の教育や研究用の開発環境です。開発環境はJupyter Notebookに似たインターフェースを持ち、Pythonの主要なライブラリがプリインストールされています。
引用元:Google Colabの使い方

nim4colabのインストール

Google Colab で nimコマンドを使用するためのライブラリであるnim4colabをインストールします.

%load_ext nim4colab により%を付けてNimのコマンドを使えます.

python
!pip install git+https://github.com/demotomohiro/nim4colab.git
%load_ext nim4colab

nimpyのインストール

PythonからNimを呼び出すためのNimのライブラリ、nimpyをインストールします.

Nim初心者が始めるNimとnimpy

nimpyをインストールすることで、後述の fib.nim内で使っているnimpyをコンパイル、ライブラリとして使用することができます.

nimbleはNimのライブラリをインストールするためのコマンドです.

python
%nimble install nimpy -y

Nimのコメントアウト

プログラミングでは、コード中にコメントを書くことができます。

Nimでは文頭に「#」を書くことで、コメントとして扱われます。

コメント扱いされた文は実行されることはありません。

Python
# Google Colabでnimを使用するためのおまじない
%%nimc
# この行はコメントです.
# print("コメントです") 

echo "Hello, World"
echo "Not, Comment"

# 実行結果
# Hello, World
# Not, Comment

Nimの変数宣言

Nimでは,Pythonと同様に変数をつける時は、左に変数名・右に数値や文字列を置き、間に「=」を挟みます。変数は大文字と小文字でも区別されます。

変数名が長い時に、Pythonのように「_」で区切るとエラーが発生しますので,区切る箇所を大文字にします。

変数宣言

また,Nimでは変数宣言の前に「var, let, const」をつける必要があります.

上記の3つのタグについては,下記の通りです.

  • var:書き換え可能な変数の定義はvarで行います
  • let:変数を束縛したい場合はletを使用します
  • const:constで宣言した値は、コンパイル時に確定します。 letの場合は実行時に確定する変数で、変更ができないという扱いのようです。

Nim 変数、定数の宣言方法(var, let, const)

Nimを知ってほしい2022

nim(var)

Python
# Google Colabでnimを使用するためのおまじない
%%nimc
# データ型→初期値
var text:string
text = "text"
# データ型と初期値を同時
var Text = "Text"

# 出力
echo text
echo Text

# 変数名が長い時
# 同時に宣言
# varの後で改行は必須
var 
    x, y:int = 1
    helloworldmessage = "Hello, World"
    HelloWorldMessage = "Hello, World"
# varなので書き換え可能
y = 2

# 出力
echo x, helloworldmessage
echo y, HelloWorldMessage
# 実行結果
# text
# Text
# 1Hello, World
# 2Hello, World

nim(let)

Python
# Google Colabでnimを使用するためのおまじない
%%nimc
# データ型→初期値
# letでは初期値なしではエラー発生
# let text:string
# text = "text"

# データ型と初期値を同時
let text = "text"
let Text = "Text"

# 出力
echo text
echo Text

# 変数名が長い時
# 同時に宣言
# varの後で改行は必須
let 
    x, y:int = 1
    helloworldmessage = "Hello, World"
    HelloWorldMessage = "Hello, World"

# letなので書き換え不可能
# エラー発生
# y = 2

# 出力
echo x, helloworldmessage
echo y, HelloWorldMessage
# 実行結果
# text
# Text
# 1Hello, World
# 1Hello, World

nim(const)

Python
# Google Colabでnimを使用するためのおまじない
%%nimc
# データ型→初期値
# constでも初期値なしではエラー発生
# const text:string
# text = "text"

# データ型と初期値を同時
const text = "text"
const Text = "Text"

# 出力
echo text
echo Text

# 変数名が長い時
# 同時に宣言
# constの後で改行は必須
const 
    # x, y:int = 1 #constではエラー発生
    x = 1
    y:int = 2
    helloworldmessage = "Hello, World"
    HelloWorldMessage = "Hello, World"

# constなので書き換え不可能
# エラー発生
# y = 2

# 出力
echo x, helloworldmessage
echo y, HelloWorldMessage
# 実行結果
# text
# Text
# 1Hello, World
# 2Hello, World

関数を作成(def → proc)

Nimではprocで関数を作成する.

Python
# Google Colabでnimを使用するためのおまじない
%%nimc
# 返り値:result
proc integer00() =
    var 
        text = "text"
        Text = "Text"
    echo text
    echo Text

    # 変数名が長い時
    var 
        helloworldmessage  = "Hello, World"
        HelloWorldMessage = "Hello, World"
    echo helloworldmessage
    echo HelloWorldMessage

integer00()
# text
# Text
# Hello, World
# Hello, World

また,返り値は下記の3つで設定できる.

  • result
  • return
  • 関数名
Python
# Google Colabでnimを使用するためのおまじない
%%nimc
# 返り値:result
proc HelloWorld(str1: string): string =
    var text = str1 # &は文字列連結演算子
    result = "Hello World"

# 返り値:return
proc HelloWorld2(str1: string): string =
    var text = "Hello World" & str1 # &は文字列連結演算子
    return text

# 返り値:関数名
proc HelloWorld3(str1: string): string =
    var text = "Hello World\n" & str1 # &は文字列連結演算子
    text

# 初期設定
var echo_str:string

# 返り値:result
echo_str = HelloWorld("mass")
echo echo_str
# 返り値:return
echo_str = HelloWorld2("mass")
echo echo_str
# 返り値:関数名
echo_str = HelloWorld3("mass")
echo echo_str

# Hello World
# Hello Worldmass
# Hello World
# mass

まとめ

Google Colaboratory+Nimで変数宣言について勉強しました.

参考サイト

Nimの特徴や使い方をわかりやすく解説!

Nim初心者が始めるNimとnimpy

Speeding up Python code with Nim

Nimを組み込んでPythonを高速化してみた

至高の言語、Nimを始めるエンジニアへ

Nim Compiler User Guide

スレッドローカルストレージ

Nim 関数

PythonistaのためのNim入門

nim内包表記

Nimの便利な標準ライブラリ sugar

Nim初心者が始めるNimとnimpy

Nimでゼロ埋め

Nim 変数、定数の宣言方法(var, let, const)

Nimを知ってほしい2022

nim いろいろなコメントの方法

【Nim】個人的逆引きリファレンス