2ちゃんねる ■掲示板に戻る■ 全部 1- 最新50    

nim

1 :デフォルトの名無しさん:2018/03/01(木) 18:32:18.16 ID:vh/yy2VS.net
https://nim-lang.org/

196 :デフォルトの名無しさん:2022/09/13(火) 12:06:13.19 ID:0kBS+x4w.net
言語仕様としてはモダンな言語の中で1番わかりやすいし
Rustで書くほどでもない軽いスクリプトとかならNimで良いんだけど流行らんなあ
やはり個人開発者の言語が流行ることはもうないのか

197 :デフォルトの名無しさん:2022/09/13(火) 15:06:32.01 ID:EXK746Ox.net
>>192 >>195
ありがとうございました

198 :デフォルトの名無しさん:2022/09/13(火) 16:00:02.06 ID:EXK746Ox.net
アク禁?

199 :デフォルトの名無しさん:2022/09/13(火) 16:03:11.36 ID:EXK746Ox.net
var ws = newWideCString(8) # ws.len == 0
for n in 0..7: ws[n] = Utf16Char(65 + n)
# ws.len == 8
ws[7] = Utf16Char(0) # ws.len == 7
echo ws # ABCDEFG
と比べて

200 :デフォルトの名無しさん:2022/09/13(火) 16:05:36.05 ID:EXK746Ox.net
なぜ拒否られる?

201 :デフォルトの名無しさん:2022/09/13(火) 16:06:26.54 ID:EXK746Ox.net
驚き最小の法則ですね
var s = newString(8) # s.len == 8
for n in 0..7: s[n] = char(65 + n)
# s.len == 8
s[7] = '\0' # s.len == 8
echo s # ABCDEFG

202 :デフォルトの名無しさん:2022/09/13(火) 16:07:15.32 ID:EXK746Ox.net
判った char だけダメなんね

203 :デフォルトの名無しさん:2022/09/13(火) 16:09:20.44 ID:EXK746Ox.net
驚き最小の法則
var ws = newWideCString(8)
echo ws.len # -> 0
for n in 0..7: ws[n] = Utf16Char(65 + n)
echo ws.len # -> 8
ws[7] = Utf16Char(0)
echo ws.len # -> 7
echo ws # ABCDEFG
と比べて
var s = newString(8)
echo s.len # -> 8
for n in 0..7: s[n] = char(65 + n)
echo s.len # -> 8
s[7] = '\0'
echo s.len # -> 8
echo s # ABCDEFG

204 :デフォルトの名無しさん:2022/09/13(火) 16:11:32.87 ID:EXK746Ox.net
インド人もびっくり

205 :デフォルトの名無しさん:2022/09/13(火) 19:05:39.59 ID:ketgm+4i.net
Win土人
Nim土人

206 :デフォルトの名無しさん:2022/09/16(金) 10:37:25.88 ID:8/QLgRNp.net
proc testfunc(x: cint): cint {.exportc, cdecl, dynlib.} =
return x
と描かれたソースを
nim c --app:lib -d:release hoge.nim
でコンパイルするとカレントディレクトリに hoge.dll が生成されて
import ctypes
ctypes.cdll.LoadLibrary('./hoge.dll').testfunc(123)
と実行出来たのですが
nim cpp --app:lib -d:release hoge.nim
でコンパイルするとカレントディレクトリに hoge.dll が生成されているはずなのに
LoadLibrary のところで
FileNotFoundError: Could not find module '(fullpath)\hoge.dll' (or one of its dependencies).
Try using the full path with constructor syntax.
と言われてしまいます
多分 or one of its dependencies が引っ掛かっているのではないかと思うのですが
何が足りないのでしょう? stdc++ の shared library ?

207 :デフォルトの名無しさん:2022/09/16(金) 10:57:11.84 ID:8/QLgRNp.net
libstdc++-6.dll
をコピーしてみましたがだめでした

208 :デフォルトの名無しさん:2022/09/16(金) 11:30:30.18 ID:lbCTEBn9.net
nimpy
nimodule

209 :デフォルトの名無しさん:2022/09/16(金) 13:53:03.44 ID:kdRP0PjD.net
>>206
objdumpっていうプログラムを使えばどのdllを使っているか見れるよ。
使い方忘れたからググってね。
Nimをインストールしたときにgccもインストールしてればそのときにobjdumpも一緒にインストールされる。
他にも依存しているdllを見れるツールは色々あるけど

210 :デフォルトの名無しさん:[ここ壊れてます] .net
>>209
windows用にもobjdumpあんの?

211 :デフォルトの名無しさん:2022/09/16(金) 16:24:53.42 ID:8/QLgRNp.net
windows で nim 入れるときに一緒に入った mingw64 の中に objdump がありました

212 :デフォルトの名無しさん:2022/09/16(金) 16:34:58.81 ID:8/QLgRNp.net
>>209
objdump -p hoge.dll | findstr "dll"
で出て来たのが
libgcc_s_seh-1.dll
libstdc++-6.dll
kernel32.dll
msvcrt.dll
でした
libstdc++-6.dll
だけではなく
libgcc_s_seh-1.dll
も必要でした
無事動作しましたありがとう

213 :デフォルトの名無しさん:2022/09/18(日) 09:51:11.78 ID:KpBP36NG.net
>>203
https://github.com/tauplus/nim_doc_ja/blob/master/nim-meory_ja.md#%E6%96%87%E5%AD%97%E5%88%97%E3%81%A8%E3%82%B7%E3%83%BC%E3%82%B1%E3%83%B3%E3%82%B9Strings-and-seqs

214 :デフォルトの名無しさん:2022/09/22(木) 10:36:47.71 ID:u9/ouAZs.net
import nimpy
import nimpy/py_lib as lib
initPyLibIfNeeded()
let wx = pyImport("wx")
let app = wx.App()
let frm = wx.Frame(nil, -1, "Hello, work!")
discard frm.Show()
discard app.MainLoop()

簡単杉感嘆

215 :デフォルトの名無しさん:2022/09/22(木) 15:46:35.23 ID:zq3yyQIu.net
こんなのや
https://github.com/khchen/wNim
こんなのも
https://github.com/simonkrauter/NiGui

216 :デフォルトの名無しさん:2022/09/23(金) 15:49:32.66 ID:9eaiNZZz.net
セルフホスティングくらいでけるのか?

217 :デフォルトの名無しさん:2022/09/23(金) 16:54:42.46 ID:COcKyTVz.net
>>216
セルフホストってどういう意味で言ってるかは知らないけど
Nim forum自体がNimで実装されてるよ。
https://github.com/nim-lang/nimforum

218 :デフォルトの名無しさん:2022/09/23(金) 20:37:31.28 ID:vOu7CdIL.net
プログラミング言語でセルフホスティングっていったらコンパイラが自身の言語で実装できることだろうよ
しかしできたとしてトランスパイラをセルフホスティングと呼んでいいのか

219 :デフォルトの名無しさん:2022/09/23(金) 22:00:58.25 ID:U9mPo3hK.net
出力がC言語か機械語かの違いぐらいだしトランスパイラだとしても普通にセルフホスティングって呼ぶよ

220 :デフォルトの名無しさん:2022/09/23(金) 22:27:48.78 ID:COcKyTVz.net
https://github.com/nim-lang/Nim
ここにNim言語のコンパイラがあるけどソースコードはNim言語で書かれている。
gccなどのCコンパイラとgitがあればソースコードからビルドできる。
ソースコードからビルドするときはまず古いバージョンのNimコンパイラをC言語に変換したものをダウンロードしてCコンパイラでビルドする。
それでビルドしたNimコンパイラで最新のNimコンパイラをビルドする。

221 :デフォルトの名無しさん:2022/09/24(土) 20:13:52.60 ID:7pBAspe1.net
わりとどうでもいいな

222 :デフォルトの名無しさん:2022/09/25(日) 02:56:32.67 ID:z6wPsTgH.net
Cコンパイラは一般的にC言語で実装されているが、どうやってCコンパイラをビルドするのか
あらかじめビルド済みのCコンパイラを持ってきてビルドする
ではそのビルド済みのCコンパイラはどうやってビルドされたというのか

223 :デフォルトの名無しさん:2022/09/25(日) 08:27:58.95 ID:bk7Mey46.net
たぶん世界で最初のC言語はアセンブリかB言語かフォートランか何か別の言語で書かれていたんじゃないの?

224 :デフォルトの名無しさん:2022/09/26(月) 14:35:28.98 ID:heiSJ5NK.net
BigBangは未だ仮説だ

225 :デフォルトの名無しさん:2022/09/28(水) 12:46:44.72 ID:bM9/UxvQ.net
toSeq(0..360|24).map(rad)
と描くと
Error: type mismatch: got <SteppedSlice>
と言われて怒られたので
toSeq(0..360).filter(x => x mod 24 == 0).map(rad)
で描き治したら一応動く訳だが
0..360|24
観たいに描く方法は?

226 :デフォルトの名無しさん:2022/09/28(水) 13:40:07.41 ID:tqdPdMIm.net
iterator `|`(x: HSlice; y: int): int =
みたいな演算子のイテレータを定義すればいいじゃん。

227 :デフォルトの名無しさん:2022/09/28(水) 17:12:46.81 ID:XnHyDYU1.net
nim 1.6.8 出た

228 :デフォルトの名無しさん:2022/09/29(木) 21:45:04.30 ID:9HIV6ABQ.net
ウィ

229 :デフォルトの名無しさん:[ここ壊れてます] .net
>>226
iterator items(s: SteppedSlice): int =
var c = s.a
while c <= s.b:
yield c
c += s.step

を定義したらイケました
有賀豚

230 :デフォルトの名無しさん:[ここ壊れてます] .net
ニンニン

231 :デフォルトの名無しさん:2022/10/22(土) 14:42:48.48 ID:Q+2x5vm1.net
本日のNimConf2022期待age

232 :デフォルトの名無しさん:2022/11/02(水) 12:51:11.01 ID:VT3BATxp.net
1,2ヶ月くらい前に
Nim言語のマニュアル日本語訳がOSDNのページにアップされていて
これで5年後には結構人気が出るかもと喜んでいたら
突然ページが消滅してショックだった

キャッシュを探したけど発見できないので
コピー持ってる人がいたらどこかにアップしてもらえらばありがたいです
(ライセンス上問題が無ければですが)

233 :デフォルトの名無しさん:2022/11/02(水) 22:26:34.03 ID:AEY2Eek1.net
古いキャッシュならInternet Archiveにあった
https://web.archive.org/web/20201128232605/http://nim-lang-081.osdn.jp/
https://web.archive.org/web/20200928154858/http://nim-lang-081.osdn.jp/docs/manual.html

まあキャッシュ古すぎて更新追いついてないけど

234 :デフォルトの名無しさん:2022/11/02(水) 22:33:40.08 ID:AEY2Eek1.net
https://ja.osdn.net/users/megumi_engines/projects/
このひとがオーナーになってるプロジェクトの1つみたいだけど、Twitterのアカウントも消えちゃってるね
プライベートが忙しくなったのかな

235 :デフォルトの名無しさん:2022/11/03(木) 15:08:48.38 ID:lETVCa2o.net
Last Update: 2022-09-21 01:12
Nim プログラミング言語 - 非公式日本語版 (翻訳活動終了)に関する活動はすべて終了しました。リポジトリの再公開予定はありません。

理由はよう判らん
githubにfork無かったかな

236 :デフォルトの名無しさん:2022/11/04(金) 07:27:29.10 ID:7DKhUjkg.net
日本語訳マニュアルの代わりになるかどうかはわからんけど
amazonで日本語のNim言語の書籍が売られてるよ。

237 :デフォルトの名無しさん:2022/11/05(土) 00:35:21.38 ID:mvfmSa9B.net
当時高校生の描いたやつか
CやC++との連携について
一行しか描かれてなかったな

238 :デフォルトの名無しさん:2022/11/06(日) 13:47:02.47 ID:4CeLTSQg.net
c2nim にがっかり感なんだけど
こんなもん?
それとも使い方間違ってる?
期待し過ぎ?

239 :デフォルトの名無しさん:2022/11/06(日) 16:29:46.57 ID:zKDylNc8.net
単純化した具体例がないとなんとも

240 :デフォルトの名無しさん:2022/11/06(日) 16:42:07.10 ID:06z0Icrt.net
わかっているのかもしれないけど、c2nimはどんなC言語のコードもNim言語に変換するものではない。C言語ライブラリをNim言語から使うためのバインディングをCのヘッダーファイルから生成するツールみたいなものだ。
c2nimに似たことができるこんなツールもあるよ。
https://github.com/PMunch/futhark

241 :デフォルトの名無しさん:2022/11/07(月) 12:40:52.04 ID:1sAmX+SP.net
>>233
全く使えないキャッシュだな

242 :デフォルトの名無しさん:2022/11/07(月) 12:44:41.58 ID:1sAmX+SP.net
>>232
3年前の nim 1.4.0だけど Nim日本語マニュアル
https://github.com/tauplus/nim_doc_ja

243 :デフォルトの名無しさん:2022/11/07(月) 13:21:56.37 ID:V8od12Ai.net
ダメだこりゃ
みんなでzigに移動しよう

244 :デフォルトの名無しさん:2022/11/07(月) 14:15:04.63 ID:xn4jxoWB.net
いーんだよ グリーンだよ

245 :デフォルトの名無しさん:2022/11/08(火) 12:57:20.87 ID:CnIxTlte.net
template hoge(fuga: string): string =
fmt"{fuga}"

観たいなときに fuga が undeclared になるんだけどなんで?

246 :デフォルトの名無しさん:2022/11/08(火) 13:05:00.14 ID:CnIxTlte.net
>>240
なるほど良さげ

Sounds great, what's the catch?
Futhark is currently in an alpha state.
It currently doesn't support C++, and it doesn't understand things like function-style macros.
It might also mess up on definition types I haven't seen yet in the small handful of libraries I've tested it against.
All of these things are things I hope to get fixed up.

247 :デフォルトの名無しさん:2022/11/08(火) 13:15:11.71 ID:CnIxTlte.net
>>245 自己レス
出来ました本当にありがとうございました
template hoge(fuga: string): string =
block:
let injectedfuga {.inject.} = fuga
fmt"{injected_fuga}"
https://qiita.com/momeemt/items/000d1f6c384f4f00e103

248 :デフォルトの名無しさん:2022/11/08(火) 18:53:20.46 ID:nCLZIP1Q.net
>>247
それは公式ドキュメントのここに書いてあるじゃないですか。
https://nim-lang.org/docs/strformat.html#limitations

249 :デフォルトの名無しさん:2022/11/08(火) 19:07:14.22 ID:2BJbmpY0.net
Pythonスレでテンプレになってる内容をNim用に変更したので
次スレからはテンプレにしてください

-----ここから

Nimの★ソースコードをそのまま5ちゃんに貼るとインデントが崩れてチヌ★
【【【複数の連続半角スペースはなにもなかったことにされる&タブは普通には入れられない】】】掲示板の仕様なので、
プログラム文は↓等の、いわゆるコードうp用サイトに貼ってこいください。
ttps://glot.io/new/nim    結構使える。
ttps://play.nim-lang.org/   本家。
ttp://ideone.com/      デフォ設定はC用のため、言語選択ボタン押下がピコ手間かも。
ttp://pastebin.com/     まずまずシンプル。

-----ここまで

250 :デフォルトの名無しさん:2022/11/09(水) 22:27:24.03 ID:5vHWfdFN.net
判り初めた my Revolution

251 :デフォルトの名無しさん:2022/11/10(木) 13:14:50.85 ID:JZ2iIpp8.net
試してみた
本家 https://play.nim-lang.org/#ix=4ftO
スッキリ https://glot.io/snippets/gf9x33imvc
ダメぽよ(実行時エラー?) https://ideone.com/9BYjHA (たまに死ぬよねこのサイト)
貼るだけ? https://pastebin.com/07h9Zjrx

ideoneがダメなのはバージョンの問題?

252 :デフォルトの名無しさん:2022/11/10(木) 13:25:08.92 ID:JZ2iIpp8.net
これで逝けました
https://ideone.com/HBEKZu
pragmaのNimNodeを指定出来なかったらしい
ideone の Nim は (nim 0.19.4)

253 :デフォルトの名無しさん:2022/11/10(木) 14:16:57.58 ID:JDmtuJFO.net
https://wandbox.org/

254 :デフォルトの名無しさん:2022/11/10(木) 15:04:27.30 ID:JDmtuJFO.net
↑のWandboxでも最新の安定版Nimを使えるしコードを共有できる。

255 :デフォルトの名無しさん:2022/11/10(木) 15:55:36.21 ID:hnXF7Xx/.net
ここまでのまとめ
ttps://glot.io/new/nim    結構使える
ttps://wandbox.org/ 最新のNim使える
ttps://play.nim-lang.org/  本家
ttp://pastebin.com/      ソース貼り付けのみ

256 :デフォルトの名無しさん:2022/11/10(木) 16:23:45.65 ID:j+QMfGd1.net
やっぱオフサイドスタイルはクソかよ。

257 :デフォルトの名無しさん:2022/11/10(木) 16:52:41.86 ID:JZ2iIpp8.net
>>253
wandboxだと(っていうかそれ以外でもかもだけど)
実行ボタンの上に
$ nim c ./prog.nim
って表示されてて c を cpp に変更したくても出来ない
左上の「コンパイルオプション」らしい枠に cpp を入れると
$ nim c ./prog.nim cpp
になったわ

258 :デフォルトの名無しさん:2022/11/10(木) 20:00:36.53 ID:JDmtuJFO.net
>>257
確かにwandboxだとnim cppでコンパイルできないっぽいね
もしかしたらgithubのwandboxリポジトリに要望を出せば対応してくれるかもしれない。もしくは自分で機能を実装してpull requestを出すか

259 :デフォルトの名無しさん:2022/11/11(金) 10:16:18.33 ID:8dOB0zbX.net
ここは未完成なのかな
日本語マニュアルっぽいけど
https://2vg.github.io/Nim-World/

260 :デフォルトの名無しさん:2022/11/12(土) 14:40:51.16 ID:OIoQvXCU.net
自分で育てる感覚楽しいですね

261 :デフォルトの名無しさん:2022/11/15(火) 13:26:12.68 ID:QGmQMBHU.net
type
Hoge* = object
fuga*: int
としないで
type
HogeObj* = object
fuga*: int
Hoge* = ref HogeObj
とするのは必須?習慣?
前者のデメリットは DeepCopy だというのは判るのですが
毎回後者を使った方が良い?

262 :デフォルトの名無しさん:2022/11/16(水) 09:07:52.80 ID:qCq9+PtI.net
{.byref.} じゃね?

263 :sage:2022/11/16(水) 13:30:51.35 ID:4BSq9VuL.net
横からだが
>>262 のbyrefと >>261 は完全に等価?

264 :デフォルトの名無しさん:2022/11/16(水) 15:57:06.50 ID:z+sJwdsY.net
proc 読んだとき ref のフリをする fake が 259

265 :デフォルトの名無しさん:2022/11/16(水) 18:16:18.08 ID:kOxph/zs.net
ref objectは一つのオブジェクトを複数のオブジェクトから参照したいときや継承使ってオブジェクト指向なコードを書くときに必要となる。
それ以外の場合はrefのついていないobjectのほうが速くなることが多い。
ref型は常にヒープに確保されポインタ経由でアクセスされるけどobjectだとスタックに確保できるしポインタで間接的に参照する必要もない。
object型のseqだとメモリ上に連続して確保されるけどref object型のseqにするとメモリ上に連続して確保されるとは限らないからキャッシュミスが起きやすくなる。
ある程度大きなobjectはプロシージャに渡すときに自動的にポインタ経由で渡されるからコピーのコストが問題になることがあんまりないと思うよ。
C++で言えばobjectはstructをそのまま使っている感じでref objectはstructをstd::shared_ptrごしに使っている感じ。

266 :デフォルトの名無しさん:2022/11/17(木) 09:41:27.60 ID:V4QZv0Fq.net
proc incx(i: int): int =
let j = i
{.emit: "++j;".}
result = j

echo incx(5)

https://glot.io/snippets/gfgq0p65a6
let で定義された変数も書き換え可能なんですね素敵ですね

267 :デフォルトの名無しさん:2022/11/17(木) 09:41:55.68 ID:V4QZv0Fq.net
>>262-263
全く別物

268 :デフォルトの名無しさん:2022/11/17(木) 09:45:16.34 ID:V4QZv0Fq.net
>それ以外の場合はrefのついていないobjectのほうが速くなることが多い。

これはどうかなぁ
遅くなることの方が多いと思うが

269 :デフォルトの名無しさん:2022/11/17(木) 10:53:32.89 ID:hYmfXxMP.net
>>268
どうしてrefのついてないobjectのほうが遅くなる場合が多いの?

270 :デフォルトの名無しさん:2022/11/17(木) 14:28:18.19 ID:hYmfXxMP.net
>>266
emit pragma使っているんだからNimの安全性は無効になる。
rustでunsafeを使うようなもの。

271 :デフォルトの名無しさん:2022/11/17(木) 15:18:49.83 ID:fBlcqeZM.net
>>265
>ある程度大きなobjectはプロシージャに渡すときに自動的にポインタ経由で渡されるから

ってことは {.byref.} 描く必要無い?

272 :デフォルトの名無しさん:2022/11/17(木) 17:33:28.89 ID:7oSKGzG8.net
>>271
自動でやるのは関数の引数にオブジェとを渡した時だから
それ以外にコピーが頻繁に発生しないなら
byrefいらないんじゃね?

273 :デフォルトの名無しさん:2022/11/17(木) 18:51:38.00 ID:hYmfXxMP.net
>>271
https://nim-lang.org/docs/manual.html#procedures-var-parameters

var parameters are never necessary for efficient parameter passing. Since non-var parameters cannot be modified the compiler is always free to pass arguments by reference if it considers it can speed up execution.
って書いてあります。

274 :デフォルトの名無しさん:2022/11/17(木) 19:03:15.70 ID:hYmfXxMP.net
>>271
https://nim-lang.org/docs/manual.html#foreign-function-interface-byref-pragma

Nim manualではbyref pragmaがForeign function interfaceの章の下にある。
つまりbyref pragmaはC/C++の関数に引数をポインタ渡ししなきゃいけないときに使うもの。
それ以外のときに使う必要性はほぼ無いってこと。

275 :デフォルトの名無しさん:2022/11/17(木) 21:39:23.14 ID:ArWNCDPA.net
>>268
そんな速度差気付くことある?

276 :デフォルトの名無しさん:2022/11/18(金) 05:58:57.10 ID:AmxJEdx7.net
君らスタックの消費は気にならんのけ?

277 :デフォルトの名無しさん:2022/11/18(金) 06:16:37.43 ID:IYaGyAsl.net
>>276
10kバイト以上のでかいobjectをたくさん使うとかならスタックを使わないようにref objectにしてヒープに確保してもいいと思う。
けどそんなにでかいobject型のローカル変数をたくさん使うことってあんまりないきがするけど。

278 :デフォルトの名無しさん:2022/11/18(金) 09:39:59.23 ID:IJuokuF8.net
たとえば
https://qiita.com/dumblepy/items/8d13592d6760d0155d89
>オブジェクトの宣言にはref objectを使います。
>Nimでは関数の引数に入れられた変数の容量に応じてコンパイラが自動で値渡し/参照渡しを調節しますが、
>これは挙動の予測が付かずバグの原因になりえます。
>ref objectでオブジェクトを宣言していれば必ず参照渡しになるので、
>アプリケーション開発ではこちらに統一しましょう。

みたいなことが

279 :デフォルトの名無しさん:2022/11/18(金) 10:17:44.40 ID:IJuokuF8.net
問題無い訳ではないとも
https://flat-leon.はてぶろ.com/entry/nim_arg_pass
バージョンや記事の年代に気を付けないといかんのかね

280 :デフォルトの名無しさん:2022/11/18(金) 11:42:20.25 ID:IJuokuF8.net
古いけどここの議論は判り易い
https://forum.nim-lang.org/t/1207

281 :デフォルトの名無しさん:2022/11/18(金) 11:48:22.19 ID:ygRIcUIa.net
>>273
それは var の説明であって ref の説明ではないですね

282 :デフォルトの名無しさん:2022/11/18(金) 12:02:19.50 ID:IYaGyAsl.net
>>278
>>281
refのついた型またはvar引数は常に引数を参照渡し(ポインタのコピー)する。
refやvarがついてない場合は引数のサイズにあわせてコピー渡しか参照渡しになるが、どちらにせよプロシージャ内で引数を変更するのは禁止

283 :デフォルトの名無しさん:2022/11/18(金) 12:10:00.28 ID:IYaGyAsl.net
だからデフォルトの引数の渡し方でそれがコピー渡しになろうが参照渡しになろうがそれで挙動が変わったりバグの温床になることはない。
ただしaddrとかemit, Assembler statementなどのNimが安全性を保証してない機能を使う場合は例外だ。

284 :デフォルトの名無しさん:2022/11/18(金) 12:24:09.04 ID:IJuokuF8.net
参照とか reference とか同じ名前だから混同してるのかも知れないが
Nim の参照型と C++ の参照型は全く別物
C++ の引数で使う参照型 & は Nim では var の方が近い
Nim の ref は C++ ではポインタ * と思った方が良い
Nim では
GC で管理されるポインタが ref
GC で管理されないポインタが ptr

285 :デフォルトの名無しさん:2022/11/18(金) 17:46:16.11 ID:PNsYUFFf.net
これ使うか使わないかでも全然違うのよね --gc:arc

286 :デフォルトの名無しさん:2022/11/18(金) 18:35:09.65 ID:yVVkBIHa.net
最近は --mm:arc

287 :デフォルトの名無しさん:2022/11/19(土) 16:28:59.40 ID:F8GIHVyH.net
--mm:orc 推奨

288 :デフォルトの名無しさん:2022/11/19(土) 17:55:05.22 ID:lavOlnrp.net
Nim2では--mm:orcがデフォルトになるらしいぞ。
みんな知ってると思うけど--mm:arcだともし循環参照があったときにメモリリークするぞ。

289 :デフォルトの名無しさん:2022/11/19(土) 19:05:39.54 ID:7QNjN12J.net
Nim2なんて10年以上先

290 :デフォルトの名無しさん:2022/11/20(日) 10:26:07.81 ID:MUgzJmMj.net
>>278 のリンク先なんか
「Nimでアプリケーション開発をするための設計のベストプラクティス」
みたいにイキってるけど
信用していいの?

291 :デフォルトの名無しさん:2022/11/20(日) 11:36:46.79 ID:h2bm0L4T.net
object type 全部 ref 付けろ教のひと
たまにいるよね
迷惑

292 :デフォルトの名無しさん:2022/11/21(月) 13:35:10.22 ID:LzW8OiBh.net
割と実用になるわね
https://pastebin.com/Ry2wTRHi

293 :デフォルトの名無しさん:2022/11/22(火) 09:38:49.09 ID:E0zMoWY7.net
理由を示さないお作法は無視していい

294 :デフォルトの名無しさん:2022/11/24(木) 09:24:22.39 ID:qRYWlPaY.net
なんでもかんでもref付けろと
しつこく強要してる人は
あたまおかしい
大抵は{.byref.}で用足りる

295 :デフォルトの名無しさん:2022/11/24(木) 15:02:15.10 ID:7i9tpoXw.net
{.byref.}はnimからC/C++の関数を使うときに引数をポインタで渡しているときに使うもの。
それ以外では使う意味はないよ。
Nimはちゃんと最適な方法で引数を渡すから必要でもないのに{.byref.}とかvarとかつける必要はない。

111 KB
新着レスの表示

掲示板に戻る 全部 前100 次100 最新50
名前: E-mail (省略可) :

read.cgi ver.24052200