本文を読み飛ばす

Nim: transpilerとして使う(3) - javascriptから呼び出す

2 を書いてから追加であった話

javascriptから呼び出す

コンパイル数のシンボル・関数名は普通は数字などがつけられます。 \ ユニークになるようになってます (たぶん)

それだとコンパイルの度に関数名が変わってしまい、 \ 他のjavasciprtから呼び出すのが不便です。

外部から呼び出したい場合は以下のように記述します:

proc func(src: cstring): void {.exportc.} = ...

私がハマったのは宣言と実体、両方に記述をしないと有効にならない点でした:

proc func1(src: cstring): void {.exportc.}
proc func2(src: cstring): void {.exportc.}

proc func1(src: cstring): void {.exportc.} =   # ○
    discard

proc func2(src: cstring): void {.exportc.} =   # ×
    discard

こうして準備した関数はhtmlの中から呼び出しできます。

<script src="nim.js"> </script>
<script>
    func1("hey")
</script>

どっちかというと、こんな使い方を考えていました

<a href="javascript:func1('hey');"> button </a>

コメント

Comments powered by Disqus
宣伝: