Simplify return operation
This commit is contained in:
@@ -14,7 +14,7 @@ var Builtins = []struct {
|
||||
}{
|
||||
{
|
||||
"len",
|
||||
&Builtin{Fn: func(args ...Object) Object {
|
||||
&Builtin{Name: "len", Fn: func(args ...Object) Object {
|
||||
if len(args) != 1 {
|
||||
return newError("wrong number of arguments. got=%d, want=1",
|
||||
len(args))
|
||||
@@ -34,7 +34,7 @@ var Builtins = []struct {
|
||||
},
|
||||
{
|
||||
"input",
|
||||
&Builtin{Fn: func(args ...Object) Object {
|
||||
&Builtin{Name: "input", Fn: func(args ...Object) Object {
|
||||
if len(args) > 0 {
|
||||
obj, ok := args[0].(*String)
|
||||
if !ok {
|
||||
@@ -57,7 +57,7 @@ var Builtins = []struct {
|
||||
},
|
||||
{
|
||||
"print",
|
||||
&Builtin{Fn: func(args ...Object) Object {
|
||||
&Builtin{Name: "print", Fn: func(args ...Object) Object {
|
||||
for _, arg := range args {
|
||||
fmt.Println(arg.Inspect())
|
||||
}
|
||||
@@ -68,7 +68,7 @@ var Builtins = []struct {
|
||||
},
|
||||
{
|
||||
"first",
|
||||
&Builtin{Fn: func(args ...Object) Object {
|
||||
&Builtin{Name: "first", Fn: func(args ...Object) Object {
|
||||
if len(args) != 1 {
|
||||
return newError("wrong number of arguments. got=%d, want=1", len(args))
|
||||
}
|
||||
@@ -87,7 +87,7 @@ var Builtins = []struct {
|
||||
},
|
||||
{
|
||||
"last",
|
||||
&Builtin{Fn: func(args ...Object) Object {
|
||||
&Builtin{Name: "last", Fn: func(args ...Object) Object {
|
||||
if len(args) != 1 {
|
||||
return newError("wrong number of arguments. got=%d, want=1", len(args))
|
||||
}
|
||||
@@ -107,7 +107,7 @@ var Builtins = []struct {
|
||||
},
|
||||
{
|
||||
"rest",
|
||||
&Builtin{Fn: func(args ...Object) Object {
|
||||
&Builtin{Name: "rest", Fn: func(args ...Object) Object {
|
||||
if len(args) != 1 {
|
||||
return newError("wrong number of arguments. got=%d, want=1",
|
||||
len(args))
|
||||
@@ -131,7 +131,7 @@ var Builtins = []struct {
|
||||
},
|
||||
{
|
||||
"push",
|
||||
&Builtin{Fn: func(args ...Object) Object {
|
||||
&Builtin{Name: "push", Fn: func(args ...Object) Object {
|
||||
if len(args) != 2 {
|
||||
return newError("wrong number of arguments. got=%d, want=2",
|
||||
len(args))
|
||||
@@ -158,7 +158,7 @@ var Builtins = []struct {
|
||||
},
|
||||
{
|
||||
"pop",
|
||||
&Builtin{Fn: func(args ...Object) Object {
|
||||
&Builtin{Name: "pop", Fn: func(args ...Object) Object {
|
||||
if len(args) != 1 {
|
||||
return newError("wrong number of arguments. got=%d, want=1",
|
||||
len(args))
|
||||
@@ -184,7 +184,7 @@ var Builtins = []struct {
|
||||
},
|
||||
{
|
||||
"exit",
|
||||
&Builtin{Fn: func(args ...Object) Object {
|
||||
&Builtin{Name: "exit", Fn: func(args ...Object) Object {
|
||||
if len(args) == 1 {
|
||||
if args[0].Type() != INTEGER_OBJ {
|
||||
return newError("argument to `exit` must be INTEGER, got %s",
|
||||
|
||||
@@ -151,14 +151,15 @@ func (s *String) Clone() Object {
|
||||
type BuiltinFunction func(args ...Object) Object
|
||||
|
||||
type Builtin struct {
|
||||
Fn BuiltinFunction
|
||||
Name string
|
||||
Fn BuiltinFunction
|
||||
}
|
||||
|
||||
func (b Builtin) Type() ObjectType {
|
||||
return BUILTIN_OBJ
|
||||
}
|
||||
func (b Builtin) Inspect() string {
|
||||
return "builtin function"
|
||||
return fmt.Sprintf("<built-in function %s>", b.Name)
|
||||
}
|
||||
|
||||
type Array struct {
|
||||
|
||||
Reference in New Issue
Block a user