You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
import times, math
# ジェネリクスに無理やり入れる1block:
let time =cpuTime()
type S[f:static[proc(a, b:int):int]] =objectdiscardvar s0:S[proc(a, b:int):int= a + b]
var s =0for _ in0..<10^9:
s += s0.f(3, 4)
echo s, "", cpu_time() - time
# ジェネリクスに無理やり入れる2 (1.0.6ではコンパイルできないが1.6.14ではコンパイルできる模様)block:
let time =cpuTime()
type S[T;f, g:static[auto]] =objectdiscardvar s0 =S[int, proc(a, b:int):int= a + b, proc(a, b:int):int= a * b]()
var s =0for _ in0..<10^9:
s += s0.f(3, 4)
echo s, "", cpu_time() - time
# procで定義block:
let time =cpuTime()
procf(a, b:int):int= a + b
var s =0for _ in0..<10^9:
s +=f(3, 4)
echo s, "", cpu_time() - time
# メンバ変数で動的に定義block:
let time =cpuTime()
type S =object
f:proc(a, b:int):intvar s0 =S(f:proc(a, b:int):int= a + b)
var s =0for _ in0..<10^9:
s += s0.f(3, 4)
echo s, "", cpu_time() - time
The text was updated successfully, but these errors were encountered:
おそらく、こんなことを気にしているのは拙者くらいであろうが、nimにおいてobjectのstaticメンバー関数をどう定義するかで悩んでいました。ac-libraryのsegtreeのop, eあたりがC++のstaticメンバー関数で書かれていて合わせられると嬉しいです。現状
があって、1. で頑張っています。
The text was updated successfully, but these errors were encountered: