本文整理汇总了Golang中github.com/PuerkitoBio/agora/runtime.Number函数的典型用法代码示例。如果您正苦于以下问题:Golang Number函数的具体用法?Golang Number怎么用?Golang Number使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了Number函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: strings_Matches
// Args:
// 0 - The string
// 1 - The regexp pattern
// 2 - (optional) a maximum number of matches to return
//
// Returns:
// An object holding all the matches, or nil if no match.
// Each match contains:
// n - The nth match group (when n=0, the full text of the match)
// Each match group contains:
// start - the index of the start of the match
// end - the end of the match
// text - the string of the match
func (s *StringsMod) strings_Matches(args ...runtime.Val) runtime.Val {
runtime.ExpectAtLeastNArgs(2, args)
src := args[0].String()
rx := regexp.MustCompile(args[1].String())
n := -1 // By default, return all matches
if len(args) > 2 {
n = int(args[2].Int())
}
strmtch := rx.FindAllStringSubmatch(src, n)
if strmtch == nil {
return runtime.Nil
}
ixmtch := rx.FindAllStringSubmatchIndex(src, n)
ob := runtime.NewObject()
for i, mtches := range strmtch {
obch := runtime.NewObject()
for j, mtch := range mtches {
leaf := runtime.NewObject()
leaf.Set(runtime.String("Text"), runtime.String(mtch))
leaf.Set(runtime.String("Start"), runtime.Number(ixmtch[i][2*j]))
leaf.Set(runtime.String("End"), runtime.Number(ixmtch[i][2*j+1]))
obch.Set(runtime.Number(j), leaf)
}
ob.Set(runtime.Number(i), obch)
}
return ob
}
示例2: Param
func (jm *JotaModule) Param(vs ...runtime.Val) runtime.Val {
jm.dieOnTerminated()
jm.paramsMutex.Lock()
defer jm.paramsMutex.Unlock()
paramName := vs[0].String()
value, ok := jm.params[paramName]
if !ok {
return runtime.Nil
}
switch t := value.(type) {
case string:
return runtime.String(t)
case bool:
return runtime.Bool(t)
case int:
return runtime.Number(t)
case float64:
return runtime.Number(t)
case linear.Vec2:
return jm.newVec(t.X, t.Y)
case game.Gid:
return jm.newEnt(t)
default:
base.Error().Printf("Requested parameter of unexpected type: %T", t)
return runtime.Nil
}
}
示例3: TestStringsSplit
func TestStringsSplit(t *testing.T) {
ctx := runtime.NewCtx(nil, nil)
sm := new(StringsMod)
sm.SetCtx(ctx)
ret := sm.strings_Split(runtime.String("aa:bb::dd"), runtime.String(":"))
ob := ret.(runtime.Object)
exp := []string{"aa", "bb", "", "dd"}
if l := ob.Len().Int(); l != int64(len(exp)) {
t.Errorf("expected split length of %d, got %d", len(exp), l)
}
for i, v := range exp {
got := ob.Get(runtime.Number(i))
if got.String() != v {
t.Errorf("expected split index %d to be %s, got %s", i, v, got)
}
}
ret = sm.strings_Split(runtime.String("aa:bb::dd:ee:"), runtime.String(":"), runtime.Number(2))
ob = ret.(runtime.Object)
exp = []string{"aa", "bb::dd:ee:"}
if l := ob.Len().Int(); l != int64(len(exp)) {
t.Errorf("expected split length of %d, got %d", len(exp), l)
}
for i, v := range exp {
got := ob.Get(runtime.Number(i))
if got.String() != v {
t.Errorf("expected split index %d to be %s, got %s", i, v, got)
}
}
}
示例4: TestMin
func TestMin(t *testing.T) {
ctx := runtime.NewCtx(nil, nil)
mm := new(MathMod)
mm.SetCtx(ctx)
cases := []struct {
src []runtime.Val
exp runtime.Val
}{
0: {
src: []runtime.Val{runtime.Number(3), runtime.Number(0), runtime.Number(-12.74), runtime.Number(1)},
exp: runtime.Number(-12.74),
},
1: {
src: []runtime.Val{runtime.String("24"), runtime.Bool(true), runtime.Number(12.74)},
exp: runtime.Number(1),
},
2: {
src: []runtime.Val{runtime.Number(0), runtime.String("0")},
exp: runtime.Number(0),
},
}
for i, c := range cases {
ret := mm.math_Min(c.src...)
if ret != c.exp {
t.Errorf("[%d] - expected %f, got %f", i, c.exp.Float(), ret.Float())
}
}
}
示例5: TestMathIsInf
func TestMathIsInf(t *testing.T) {
// This is just an interface to Go's function, so just a quick simple test
ctx := runtime.NewCtx(nil, nil)
mm := new(MathMod)
mm.SetCtx(ctx)
val := 3.12
val2 := 1
ret := mm.math_IsInf(runtime.Number(val), runtime.Number(val2))
exp := math.IsInf(val, val2)
if ret.Bool() != exp {
t.Errorf("expected %v, got %v", exp, ret.Bool())
}
}
示例6: newVec
func (jm *JotaModule) newVec(x, y float64) *agoraVec {
ob := runtime.NewObject()
v := &agoraVec{
Object: ob,
jm: jm,
}
ob.Set(runtime.String("Length"), runtime.NewNativeFunc(jm.ctx, "jota.Vec.Length", v.length))
ob.Set(runtime.String("Sub"), runtime.NewNativeFunc(jm.ctx, "jota.Vec.Sub", v.sub))
ob.Set(runtime.String("Angle"), runtime.NewNativeFunc(jm.ctx, "jota.Vec.Angle", v.angle))
ob.Set(runtime.String("X"), runtime.Number(x))
ob.Set(runtime.String("Y"), runtime.Number(y))
return v
}
示例7: math_Rand
func (m *MathMod) math_Rand(args ...runtime.Val) runtime.Val {
switch len(args) {
case 0:
return runtime.Number(rand.Int())
case 1:
return runtime.Number(rand.Intn(int(args[0].Int())))
default:
low := args[0].Int()
high := args[1].Int()
n := rand.Intn(int(high - low))
return runtime.Number(int64(n) + low)
}
}
示例8: TestMathPow
func TestMathPow(t *testing.T) {
// This is just an interface to Go's function, so just a quick simple test
ctx := runtime.NewCtx(nil, nil)
mm := new(MathMod)
mm.SetCtx(ctx)
val := 1.12
val2 := 3.45
ret := mm.math_Pow(runtime.Number(val), runtime.Number(val2))
exp := math.Pow(val, val2)
if ret.Float() != exp {
t.Errorf("expected %f, got %f", exp, ret.Float())
}
}
示例9: TestStringsSlice
func TestStringsSlice(t *testing.T) {
ctx := runtime.NewCtx(nil, nil)
sm := new(StringsMod)
sm.SetCtx(ctx)
ret := sm.strings_Slice(runtime.String("agora"), runtime.Number(2))
exp := "ora"
if ret.String() != exp {
t.Errorf("expected %s, got %s", exp, ret)
}
ret = sm.strings_Slice(runtime.String("agora"), runtime.Number(2), runtime.Number(4))
exp = "or"
if ret.String() != exp {
t.Errorf("expected %s, got %s", exp, ret)
}
}
示例10: TestStringsReplace
func TestStringsReplace(t *testing.T) {
cases := []struct {
args []runtime.Val
exp string
}{
0: {
args: []runtime.Val{
runtime.String("this is the source"),
runtime.String("th"),
},
exp: "is is e source",
},
1: {
args: []runtime.Val{
runtime.String("this is the source"),
runtime.String("th"),
runtime.Number(1),
},
exp: "is is the source",
},
2: {
args: []runtime.Val{
runtime.String("this is the source"),
runtime.String("t"),
runtime.String("T"),
},
exp: "This is The source",
},
3: {
args: []runtime.Val{
runtime.String("this is the source"),
runtime.String("t"),
runtime.String("T"),
runtime.Number(1),
},
exp: "This is the source",
},
}
ctx := runtime.NewCtx(nil, nil)
sm := new(StringsMod)
sm.SetCtx(ctx)
for i, c := range cases {
ret := sm.strings_Replace(c.args...)
if ret.String() != c.exp {
t.Errorf("[%d] - expected %s, got %s", i, c.exp, ret)
}
}
}
示例11: NearbyEnts
func (jm *JotaModule) NearbyEnts(vs ...runtime.Val) runtime.Val {
jm.dieOnTerminated()
jm.engine.Pause()
defer jm.engine.Unpause()
g := jm.engine.GetState().(*game.Game)
me := g.Ents[jm.myGid]
obj := runtime.NewObject()
if me == nil {
return obj
}
ents := g.EntsInRange(me.Pos(), me.Stats().Vision())
var eds entDistSlice
for _, ent := range ents {
if ent == me {
continue
}
dist := ent.Pos().Sub(me.Pos()).Mag()
if dist > me.Stats().Vision() {
continue
}
if ent.Stats().Cloaking() > 0.9 && ent.Side() != me.Side() {
continue
}
if g.ExistsLos(me.Pos(), ent.Pos()) {
eds.ents = append(eds.ents, ent)
eds.dist = append(eds.dist, dist)
}
}
sort.Sort(&eds)
for i, ent := range eds.ents {
obj.Set(runtime.Number(i), jm.newEnt(ent.Id()))
}
return obj
}
示例12: createFileInfo
func createFileInfo(fi os.FileInfo) runtime.Val {
o := runtime.NewObject()
o.Set(runtime.String("Name"), runtime.String(fi.Name()))
o.Set(runtime.String("Size"), runtime.Number(fi.Size()))
o.Set(runtime.String("IsDir"), runtime.Bool(fi.IsDir()))
return o
}
示例13: fmt_Scanint
func (f *FmtMod) fmt_Scanint(args ...runtime.Val) runtime.Val {
var i int
if _, e := fmt.Fscanf(f.ctx.Stdin, "%d", &i); e != nil {
panic(e)
}
return runtime.Number(i)
}
示例14: math_Max
func (m *MathMod) math_Max(args ...runtime.Val) runtime.Val {
runtime.ExpectAtLeastNArgs(2, args)
max := args[len(args)-1].Float()
for i := len(args) - 2; i >= 0; i-- {
max = math.Max(max, args[i].Float())
}
return runtime.Number(max)
}
示例15: writeLine
func (of *file) writeLine(args ...runtime.Val) runtime.Val {
n := of.write(args...)
m, e := of.f.WriteString("\n")
if e != nil {
panic(e)
}
return runtime.Number(int(n.Int()) + m)
}