Flat Leon Works

アプリやゲームを作ってます。

2021-12-01から1ヶ月間の記事一覧

【Nim】お手軽契約プログラミング

Nim

この記事は「Nim Advent Calendar 2021」の25日目の記事として登録させてもらっています。 契約プログラミングとは 事前条件 事後条件 不変条件 Nimで(お手軽)契約プログラミング 事前条件をチェックする 事後条件をチェックする pre/postで記述できるように…

【Nim】無名プロシージャの書き方まとめ

Nim

この記事は「Nim Advent Calendar 2021」の24日目の記事として登録させてもらっています。 無名プロシージャの書き方 基本形 returnを省略 仮引数を省略(無い場合) 戻り値型を省略(無い場合) procと戻り値型を省略(=>記法を使う) do記法を使う(引数でのみ使…

【Nim】弱参照を実装してみる

Nim

この記事は「Nim Advent Calendar 2021」の23日目の記事として登録させてもらっています。 弱参照とは 弱参照を実装してみる 使用例 注意点 参考リンク 弱参照とは 弱参照の定義はいろいろあると思いますが、ここでは参照先が破棄されたことを検知できる参照…

【Nim】文字列リテラルと書式について

Nim

この記事は「Nim Advent Calendar 2021」の21日目の記事として登録させてもらっています。 文字列リテラルと書式の組み合わせ爆発 Nimは複数の文字列リテラルの書き方があり、さらに書式も複数の書き方があります。 書式の書き方を羅列してみると… &"書式" &…

【Nim】XMLをDOMで読み込む

Nim

この記事は「Nim Advent Calendar 2021」の20日目の記事として登録させてもらっています。 NimのXMLパーサーについて (おまけ)SAXにするかDOMにするか XMLファイルを読み込む DOM(XmlNode)にアクセスする 自身(要素)の情報にアクセスする 子要素を取得する …

【Nim 小ネタ】2つの型が同一かどうかを判定する

Nim

この記事は「Nim Advent Calendar 2021」の17日目の記事として登録させてもらっています。 問題 突然ですが、genericsの型引数が同一の型を指すのかどうかを判定したい場合どうすればよいでしょうか。 proc hoge[T,U]() = when T == U: assert( false ) echo…

【Nim 小ネタ】C++のdynamic_cast相当のことを行う

Nim

この記事は「Nim Advent Calendar 2021」の16日目の記事として登録させてもらっています。 C++のdynamic_cast C++にはdynamic_castというキャストがあり、これを使うと安全にダウンキャスト*1を行うことができます。 ここでいう「安全」とは、ダウンキャスト…

【Nim】公式より便利なオンライン実行環境「Wandbox」の紹介

Nim

この記事は「Nim Advent Calendar 2021」15日目の記事として登録させてもらっています。 オンライン実行環境 プログラミング中、プログラミング言語の文法や挙動を確認してみたくなることがあります。そういうときに便利なのがWebサイト上でコードの入力と実…

【Nim】VSCodeで始めるNimプログラミング

Nim

この記事は「Nim Advent Calendar 2021」の9日目の記事として登録させてもらっています。 はじめに Nimとは Nimのインストール choosenimのインストール(Macの場合) xzコマンドのインストール(必要な場合) homebrewのインストール(必要な場合) choosenimのイ…