Nimで文字列から他の型への相互変換の仕方
strutilsとstrformatよく使う
何らかの型→文字列(string)
$というプロシージャを呼んでいるだけ
code:nim
var i = 1
echo $i
メソッドチェーンの間に$で型変換したい場合
code:nim
from strutils import repeat
var i: int = 1
doAssert ($i).repeat(3) == "111"
doAssert i.$.repeat(3) == "111"
注意点
$という組み込みの特殊なシンタックスではない
標準で読み込まれているプロシージャ郡の中に$というプロシージャが定義されているだけ
ユーザが独自に定義した参照型の場合は$が存在しないので文字列への変換に失敗する
値型の場合は$プロシージャを定義していなくてもよい
一時回避で参照型の変数をvar[]という風に呼び出して値型として扱うことでエラーを防げる
ちゃんと$を定義したほうが良いと思うが
code:ref.nim
type
MyObj = object
n: int
s: string
MyObjRef = ref MyObj
var obj = MyObj()
echo obj # OK
var objref = MyObjRef()
echo objref # NG
echo objref[] # OK
文字列連結
code:nim
var i: int = 1
var s: string = $i & $i
# または
import strformat
s = &"{i}{i}"
文字列→なんらかの型
to数値型
code:nim
import strutils
var i: int = "1".parseInt
var f: float = "1.1".parseFloat
to真偽値
code:nim
import strutils
var b: bool = "true".parseBool