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

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

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

全国630店舗以上!もみほぐし・足つぼ・ハンドリフレ・クイックヘッドのリラクゼーション店【りらくる】

# nim4colabのインストール

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

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

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

# nimpyのインストール

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

Nim初心者が始めるNimとnimpy (opens new window)

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

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

%nimble install nimpy -y

# Nimのコメントアウト

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

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

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

# 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) (opens new window)

Nimを知ってほしい2022 (opens new window)

# nim(var)

# 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)

# 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)

# 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で関数を作成する.

# 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
  • 関数名
# 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の特徴や使い方をわかりやすく解説! (opens new window)

Nim初心者が始めるNimとnimpy (opens new window)

Speeding up Python code with Nim (opens new window)

Nimを組み込んでPythonを高速化してみた (opens new window)

至高の言語、Nimを始めるエンジニアへ (opens new window)

Nim Compiler User Guide (opens new window)

スレッドローカルストレージ (opens new window)

Nim 関数 (opens new window)

PythonistaのためのNim入門 (opens new window)

nim内包表記 (opens new window)

Nimの便利な標準ライブラリ sugar (opens new window)

Nim初心者が始めるNimとnimpy (opens new window)

Nimでゼロ埋め (opens new window)

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

Nimを知ってほしい2022 (opens new window)

nim いろいろなコメントの方法 (opens new window)

【Nim】個人的逆引きリファレンス (opens new window)

全国630店舗以上!もみほぐし・足つぼ・ハンドリフレ・クイックヘッドのリラクゼーション店【りらくる】

Pythonで再生時間を変えずに音声のピッチを上げる方法

Pythonで再生時間を変えずに音声のピッチを上げる方法

Pythonで再生時間を変えずに音声のピッチを上げる方法を実装します.

foliumで特定座標の位置を把握する

foliumで特定座標の位置を把握する

foliumで特定座標の位置を把握します。