rgo

package module
v0.0.0-...-c9e569d Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 24, 2025 License: Apache-2.0 Imports: 16 Imported by: 0

README

RGo - Go 语言的 Ruby 风格库

Go Go Report Card Coverage Status

RGo 是一个 Go 语言库,提供了类似 Ruby 的编程体验。它包含了字符串、数组、哈希表、整数和类系统等常用数据类型的 Ruby 风格实现。

安装

go get github.com/GoLangDream/rgo

特性

  • 类似 Ruby 的字符串操作
  • 类似 Ruby 的数组操作
  • 类似 Ruby 的哈希表操作
  • 类似 Ruby 的整数操作
  • 类似 Ruby 的类系统

性能

RGO 在基本操作上与原生 Go 对象保持接近的性能,同时提供 Ruby 风格的便利 API。

性能总览
组件 基本操作 复杂操作 推荐使用场景
RString 🟢 性能相当 🟡 轻微损失 字符串处理、文本操作
RInteger 🟢 性能相当 🟡 轻微损失 数值计算、算术运算
RHash 🟢 性能相当 🟠 中等损失 键值存储、配置管理
RClass 🟠 中等损失 🔴 严重损失 原型开发、动态编程
  • 🟢 性能相当 (< 10% 差异): 适合性能敏感的应用
  • 🟡 轻微损失 (10-50% 差异): 大多数应用场景可接受
  • 🟠 中等损失 (50-500% 差异): 需要权衡开发效率vs性能
  • 🔴 严重损失 (> 500% 差异): 建议仅用于非性能关键场景
运行性能测试
# 快速测试
make benchmark-quick

# 完整测试
make benchmark

# 详细测试
make benchmark-detail

📊 详细性能分析: 性能测试报告 | 性能测试指南

快速开始

RString
import "github.com/GoLangDream/rgo"

str := rgo.NewRString("hello")
str.Upcase()           // 返回 "HELLO"
str.Downcase()         // 返回 "hello"
str.Capitalize()       // 返回 "Hello"
str.Reverse()          // 返回 "olleh"
str.Include("ell")     // 返回 true
str.StartsWith("he")   // 返回 true
str.EndsWith("lo")     // 返回 true

更多 RString 的详细文档请参考 RString.md

RArray
arr := rgo.NewRArray([]rgo.Object{
    rgo.NewRString("a"),
    rgo.NewRString("b"),
    rgo.NewRString("c"),
})

// 数组操作
arr.Push(rgo.NewRString("d"))
arr.Pop()              // 返回 "d"
arr.Reverse()          // 返回 ["c", "b", "a"]
arr.Shuffle()          // 随机打乱数组
arr.Sort()             // 排序数组
arr.Uniq()             // 去重

// 数组变换
arr.Map(func(obj rgo.Object) rgo.Object {
    return obj.(rgo.RString).Upcase()
})

// 数组查询
arr.Include(rgo.NewRString("a"))  // 返回 true
arr.Index(rgo.NewRString("b"))    // 返回 1

更多 RArray 的详细文档请参考 RArray.md

RHash
hash := rgo.NewHash()
hash.Set("name", "John")
hash.Set("age", 30)

// 获取值
name := hash.Get("name")  // 返回 "John"
age := hash.Get("age")    // 返回 30

// 删除键值对
hash.Delete("age")

// 检查键是否存在
if hash.HasKey("name") {
    // 键存在
}

// 获取所有键
keys := hash.Keys()

// 获取所有值
values := hash.Values()

更多 RHash 的详细文档请参考 RHash.md

RInteger
i := rgo.NewRInteger(42)

// 数学运算
i.Add(8)                // 返回 50
i.Sub(2)                // 返回 40
i.Mul(2)                // 返回 80
i.Div(4)                // 返回 20

// 位运算
i.BitAnd(0x0F)         // 按位与
i.BitOr(0xF0)          // 按位或
i.BitXor(0xFF)         // 按位异或
i.LeftShift(2)         // 左移
i.RightShift(1)        // 右移

// 数学函数
i.Abs()                // 绝对值
i.Gcd(18)              // 最大公约数
i.Lcm(18)              // 最小公倍数
i.Pow(2)               // 幂运算

更多 RInteger 的详细文档请参考 RInteger.md

RClass
// 创建一个 Person 类
Person := rgo.Class("Person").
    AttrAccessor("name", "age").  // 定义 name 和 age 的读写属性
    Define("initialize", func(name string, age int) *rgo.RClass {
        p := rgo.Class("Person").New()
        p.SetInstanceVar("name", name)
        p.SetInstanceVar("age", age)
        return p
    }).
    Define("introduce", func(self *rgo.RClass) string {
        name := self.GetInstanceVar("name").(string)
        age := self.GetInstanceVar("age").(int)
        return fmt.Sprintf("Hi, I'm %s and I'm %d years old.", name, age)
    })

// 创建一个 Student 类,继承自 Person
Student := rgo.Class("Student").
    Inherit(Person).
    AttrAccessor("grade").
    Define("initialize", func(name string, age int, grade string) *rgo.RClass {
        s := rgo.Class("Student").New()
        s.SetInstanceVar("name", name)
        s.SetInstanceVar("age", age)
        s.SetInstanceVar("grade", grade)
        return s
    })

// 创建实例
person := Person.Call("initialize", "John", 30).(*rgo.RClass)
student := Student.Call("initialize", "Alice", 15, "10th").(*rgo.RClass)

// 使用属性访问器
fmt.Println(person.Call("name"))  // 输出: John
person.Call("name=", "Johnny")
fmt.Println(person.Call("name"))  // 输出: Johnny

// 调用方法
fmt.Println(person.Call("introduce"))   // 输出: Hi, I'm Johnny and I'm 30 years old.

// 类方法示例
Math := rgo.Class("Math").
    DefineClass("add", func(a, b int) int {
        return a + b
    }).
    DefineClass("subtract", func(a, b int) int {
        return a - b
    })

// 调用类方法
sum := Math.Call("add", 2, 3).(int)           // 返回 5
diff := Math.Call("subtract", 5, 3).(int)     // 返回 2

// 方法缺失处理
Dynamic := rgo.Class("Dynamic").
    MethodMissing(func(name string, args ...any) any {
        return fmt.Sprintf("Called %s with args: %v", name, args)
    })

// 调用未定义的方法
result := Dynamic.New().Call("undefined_method", "arg1", "arg2").(string)
fmt.Println(result)  // 输出: Called undefined_method with args: [arg1 arg2]

RClass 提供了以下特性:

  1. 类定义和方法定义
  2. 实例方法和类方法
  3. 属性访问器(读写、只读、只写)
  4. 实例变量和类变量
  5. 继承和方法重写
  6. 父类方法调用(Super)
  7. 方法缺失处理
  8. 类型检查
  9. 线程安全

更多 RClass 的详细文档请参考 RClass.md

测试

go test -v

贡献

欢迎提交 Pull Request 和 Issue!

许可证

MIT License

Documentation

Overview

Package rgo 提供了一个类似 Ruby 的数组实现

Package rgo 提供了一个类似 Ruby 的哈希表实现

Package rgo 提供了一个类似 Ruby 的整数实现

Package rgo 提供了一个类似 Ruby 的字符串实现

Index

Constants

View Source
const (
	// HashClass 定义了哈希表的类名
	HashClass = "Hash"
)

Variables

This section is empty.

Functions

This section is empty.

Types

type BaseObject

type BaseObject struct {
	// contains filtered or unexported fields
}

BaseObject 提供 Object 接口的基本实现

func NewBaseObject

func NewBaseObject(className string) BaseObject

NewBaseObject 创建一个新的 BaseObject

func (BaseObject) Class

func (b BaseObject) Class() string

Class 返回对象的类名

func (BaseObject) IsA

func (b BaseObject) IsA(className string) bool

IsA 检查对象是否为指定类型

type Method

type Method struct {
	Name     string
	Function MethodFunc
	IsClass  bool // 是否为类方法
}

Method 表示一个方法

func (*Method) CallDirect

func (m *Method) CallDirect(self *RClass, args ...any) any

CallDirect 直接调用方法

type MethodFunc

type MethodFunc func(self *RClass, args []any) any

MethodFunc 表示一个方法函数,统一接口

type Object

type Object interface {
	// ToString 返回对象的字符串表示
	ToString() string

	// Class 返回对象的类名
	Class() string

	// IsA 检查对象是否为指定类型
	IsA(className string) bool

	// Equal 比较两个对象是否相等
	Equal(other Object) bool
}

Object 是所有 R 类型的基础接口

type RArray

type RArray struct {
	BaseObject
	// contains filtered or unexported fields
}

RArray 实现了类似 Ruby 的数组功能

func NewRArray

func NewRArray(elements []Object) RArray

NewRArray 创建一个新的数组对象

func (RArray) All

func (a RArray) All(fn func(Object) bool) bool

All 检查是否所有元素都满足条件

func (RArray) Any

func (a RArray) Any(fn func(Object) bool) bool

Any 检查是否有元素满足条件

func (RArray) Compact

func (a RArray) Compact() RArray

Compact 返回移除所有 nil 元素后的新数组

func (RArray) Count

func (a RArray) Count(obj Object) int

Count 计算元素在数组中出现的次数

func (RArray) Drop

func (a RArray) Drop(n int) RArray

Drop 返回除前n个元素外的所有元素组成的新数组

func (RArray) Each

func (a RArray) Each(fn func(Object))

Each 对数组中的每个元素执行操作

func (RArray) EachCons

func (a RArray) EachCons(n int, fn func(RArray))

EachCons 对数组中的每个连续n个元素执行操作

func (RArray) EachSlice

func (a RArray) EachSlice(n int, fn func(RArray))

EachSlice 将数组分成n个元素的切片并执行操作

func (RArray) EachWithIndex

func (a RArray) EachWithIndex(fn func(Object, int))

EachWithIndex 对数组中的每个元素及其索引执行操作

func (RArray) Empty

func (a RArray) Empty() bool

Empty 检查数组是否为空

func (RArray) Equal

func (a RArray) Equal(other Object) bool

Equal 比较两个数组是否相等

func (RArray) First

func (a RArray) First() Object

First 返回数组的第一个元素

func (RArray) Flatten

func (a RArray) Flatten() RArray

Flatten 返回展平嵌套数组后的新数组

func (RArray) Get

func (a RArray) Get(index int) Object

Get 获取指定索引的元素

func (RArray) GroupBy

func (a RArray) GroupBy(fn func(Object) Object) map[string]RArray

GroupBy 按指定条件对数组元素进行分组

func (RArray) Include

func (a RArray) Include(obj Object) bool

Include 检查数组是否包含指定元素

func (RArray) Index

func (a RArray) Index(obj Object) int

Index 返回元素首次出现的位置,不存在则返回-1

func (RArray) Join

func (a RArray) Join(sep string) RString

Join 使用指定分隔符连接数组元素

func (RArray) Last

func (a RArray) Last() Object

Last 返回数组的最后一个元素

func (RArray) Length

func (a RArray) Length() int

Length 返回数组的长度

func (RArray) Map

func (a RArray) Map(fn func(Object) Object) RArray

Map 对数组中的每个元素应用函数并返回新数组

func (RArray) None

func (a RArray) None(fn func(Object) bool) bool

None 检查是否没有元素满足条件

func (RArray) Partition

func (a RArray) Partition(fn func(Object) bool) (RArray, RArray)

Partition 将数组分为满足条件和不满足条件的两部分

func (*RArray) Pop

func (a *RArray) Pop() Object

Pop 移除并返回数组的最后一个元素

func (*RArray) Push

func (a *RArray) Push(obj Object) *RArray

Push 将元素添加到数组末尾

func (RArray) RIndex

func (a RArray) RIndex(obj Object) int

RIndex 返回元素最后出现的位置,不存在则返回-1

func (RArray) Reject

func (a RArray) Reject(fn func(Object) bool) RArray

Reject 返回不满足条件的所有元素组成的新数组

func (RArray) Reverse

func (a RArray) Reverse() RArray

Reverse 返回数组的反转副本

func (RArray) Select

func (a RArray) Select(fn func(Object) bool) RArray

Select 返回满足条件的所有元素组成的新数组

func (RArray) Shuffle

func (a RArray) Shuffle() RArray

Shuffle 返回数组的随机打乱副本

func (RArray) Size

func (a RArray) Size() int

Size 返回数组的长度(Length 的别名)

func (RArray) Slice

func (a RArray) Slice(start, end int) RArray

Slice 返回指定范围的子数组

func (RArray) SliceFrom

func (a RArray) SliceFrom(start int) RArray

SliceFrom 返回从指定位置到结尾的子数组

func (RArray) Sort

func (a RArray) Sort() RArray

Sort 返回数组的排序副本(按字符串表示排序)

func (RArray) Take

func (a RArray) Take(n int) RArray

Take 返回前n个元素组成的新数组

func (RArray) ToArray

func (a RArray) ToArray() []Object

ToArray 返回底层数组

func (RArray) ToString

func (a RArray) ToString() string

ToString 返回数组的字符串表示

func (RArray) Uniq

func (a RArray) Uniq() RArray

Uniq 返回数组的去重副本

type RClass

type RClass struct {
	// contains filtered or unexported fields
}

RClass 表示一个 Ruby 风格的类

func Class

func Class(name string) *RClass

Class 创建一个新的类

func (*RClass) After

func (c *RClass) After(methodName string, hook func(result any, args ...any)) *RClass

After 添加方法调用后的钩子

func (*RClass) Alias

func (c *RClass) Alias(newName, oldName string) *RClass

Alias 为方法创建别名

func (*RClass) AttrAccessor

func (c *RClass) AttrAccessor(names ...string) *RClass

AttrAccessor 定义属性访问器

func (*RClass) AttrReader

func (c *RClass) AttrReader(names ...string) *RClass

AttrReader 定义只读属性

func (*RClass) AttrWriter

func (c *RClass) AttrWriter(names ...string) *RClass

AttrWriter 定义只写属性

func (*RClass) Before

func (c *RClass) Before(methodName string, hook func(args ...any)) *RClass

Before 添加方法调用前的钩子

func (*RClass) Call

func (c *RClass) Call(methodName string, args ...any) any

Call 调用方法

func (*RClass) ClassMethods

func (c *RClass) ClassMethods() []string

ClassMethods 返回所有可用的类方法名

func (*RClass) ClassVars

func (c *RClass) ClassVars() []string

ClassVars 返回所有类变量名

func (*RClass) DefineClassMethod

func (c *RClass) DefineClassMethod(name string, fn any) *RClass

DefineClassMethod 定义类方法

func (*RClass) DefineEigenMethod

func (c *RClass) DefineEigenMethod(name string, fn any) *RClass

DefineEigenMethod 为单个对象定义方法

func (*RClass) DefineMethod

func (c *RClass) DefineMethod(name string, fn any) *RClass

DefineMethod 定义实例方法

func (*RClass) EigenClass

func (c *RClass) EigenClass() *RClass

EigenClass 获取元类(单例类)

func (*RClass) EnablePooling

func (c *RClass) EnablePooling() *RClass

EnablePooling 启用对象池

func (*RClass) FastCall

func (c *RClass) FastCall(methodName string, args ...any) any

FastCall 快速方法调用(跳过钩子)

func (*RClass) GetClassVar

func (c *RClass) GetClassVar(name string) any

GetClassVar 获取类变量

func (*RClass) GetInstanceVar

func (c *RClass) GetInstanceVar(name string) any

GetInstanceVar 获取实例变量

func (*RClass) GetMethodDirectly

func (c *RClass) GetMethodDirectly(methodName string) *Method

GetMethodDirectly 直接获取方法

func (*RClass) Inherit

func (c *RClass) Inherit(parent *RClass) *RClass

Inherit 继承另一个类

func (*RClass) InstanceVars

func (c *RClass) InstanceVars() []string

InstanceVars 返回所有实例变量名

func (*RClass) IsA

func (c *RClass) IsA(className string) bool

IsA 检查是否为指定类的实例

func (*RClass) MethodMissing

func (c *RClass) MethodMissing(handler func(name string, args ...any) any) *RClass

MethodMissing 设置方法缺失处理器

func (*RClass) Methods

func (c *RClass) Methods() []string

Methods 返回所有可用的方法名

func (*RClass) Name

func (c *RClass) Name() string

Name 返回类名

func (*RClass) New

func (c *RClass) New() *RClass

New 创建类的新实例

func (*RClass) Parent

func (c *RClass) Parent() *RClass

Parent 返回父类

func (*RClass) RespondTo

func (c *RClass) RespondTo(methodName string) bool

RespondTo 检查是否响应某个方法

func (*RClass) ReturnToPool

func (c *RClass) ReturnToPool()

ReturnToPool 将对象返回到池中

func (*RClass) SetClassVar

func (c *RClass) SetClassVar(name string, value any)

SetClassVar 设置类变量

func (*RClass) SetInstanceVar

func (c *RClass) SetInstanceVar(name string, value any)

SetInstanceVar 设置实例变量

func (*RClass) Super

func (c *RClass) Super(methodName string, args ...any) any

Super 调用父类的同名方法

type RHash

type RHash struct {
	BaseObject
	// contains filtered or unexported fields
}

RHash 实现了类似 Ruby 的哈希表功能

func NewHash

func NewHash() *RHash

NewHash 创建一个新的空哈希表

func NewHashWithMap

func NewHashWithMap(m map[any]any) *RHash

NewHashWithMap 使用给定的 map 创建一个新的哈希表

func (*RHash) Clear

func (h *RHash) Clear()

Clear 清空哈希表中的所有键值对

func (*RHash) CompareByIdentity

func (h *RHash) CompareByIdentity()

CompareByIdentity 设置哈希表使用身份比较

func (*RHash) CompareByIdentityQ

func (h *RHash) CompareByIdentityQ() bool

CompareByIdentityQ 检查哈希表是否使用身份比较

func (*RHash) Default

func (h *RHash) Default() any

Default 返回哈希表的默认值

func (*RHash) DefaultProc

func (h *RHash) DefaultProc() any

DefaultProc 返回哈希表的默认处理函数

func (*RHash) Delete

func (h *RHash) Delete(key any) any

Delete 删除指定键的值对,并返回被删除的值

func (*RHash) Each

func (h *RHash) Each(fn func(key, value any))

Each 遍历哈希表中的每个键值对

func (*RHash) Equal

func (h *RHash) Equal(other Object) bool

Equal 比较两个哈希表是否相等

func (*RHash) Fetch

func (h *RHash) Fetch(key any, defaultValue ...any) (any, error)

Fetch 获取指定键的值,如果键不存在则返回默认值

func (*RHash) Get

func (h *RHash) Get(key any) (any, bool)

Get 返回指定键对应的值

func (*RHash) HasKey

func (h *RHash) HasKey(key any) bool

HasKey 检查哈希表是否包含指定的键

func (*RHash) HasValue

func (h *RHash) HasValue(value any) bool

HasValue 检查哈希表是否包含指定的值

func (*RHash) Inspect

func (h *RHash) Inspect() string

Inspect 返回哈希表的详细字符串表示

func (*RHash) Keys

func (h *RHash) Keys() []any

Keys 返回哈希表中的所有键,按键的字符串表示排序

func (*RHash) Merge

func (h *RHash) Merge(other *RHash) *RHash

Merge 将另一个哈希表合并到当前哈希表,返回新的哈希表

func (*RHash) MergeBang

func (h *RHash) MergeBang(other *RHash)

MergeBang 将另一个哈希表合并到当前哈希表(原地修改)

func (*RHash) Reject

func (h *RHash) Reject(fn func(key, value any) bool) *RHash

Reject 返回一个新的哈希表,包含所有不满足条件的键值对

func (*RHash) Select

func (h *RHash) Select(fn func(key, value any) bool) *RHash

Select 返回一个新的哈希表,包含所有满足条件的键值对

func (*RHash) Set

func (h *RHash) Set(key, value any)

Set 设置指定键的值

func (*RHash) Size

func (h *RHash) Size() int

Size 返回哈希表中的键值对数量

func (*RHash) ToA

func (h *RHash) ToA() RArray

ToA 将哈希表转换为键值对数组

func (*RHash) ToCSV

func (h *RHash) ToCSV() RString

ToCSV 将哈希表转换为 CSV 字符串

func (*RHash) ToH

func (h *RHash) ToH() *RHash

ToH 返回哈希表的副本

func (*RHash) ToHTML

func (h *RHash) ToHTML() RString

ToHTML 将哈希表转换为 HTML 字符串

func (*RHash) ToJSON

func (h *RHash) ToJSON() RString

ToJSON 将哈希表转换为 JSON 字符串

func (*RHash) ToProc

func (h *RHash) ToProc() any

ToProc 返回一个函数,该函数返回指定键的值

func (*RHash) ToS

func (h *RHash) ToS() RString

ToS 将哈希表转换为字符串

func (*RHash) ToString

func (h *RHash) ToString() string

ToString 返回哈希表的字符串表示

func (*RHash) ToTSV

func (h *RHash) ToTSV() RString

ToTSV 将哈希表转换为 TSV 字符串

func (*RHash) ToXML

func (h *RHash) ToXML() RString

ToXML 将哈希表转换为 XML 字符串

func (*RHash) ToYAML

func (h *RHash) ToYAML() RString

ToYAML 将哈希表转换为 YAML 字符串

func (*RHash) TransformKeys

func (h *RHash) TransformKeys(fn func(key any) any) *RHash

TransformKeys 返回一个新的哈希表,其中的键经过转换函数处理

func (*RHash) TransformValues

func (h *RHash) TransformValues(fn func(value any) any) *RHash

TransformValues 返回一个新的哈希表,其中的值经过转换函数处理

func (*RHash) Values

func (h *RHash) Values() []any

Values 返回哈希表中的所有值

type RInteger

type RInteger struct {
	BaseObject
	// contains filtered or unexported fields
}

RInteger 实现了类似 Ruby 的整数功能

func NewRInteger

func NewRInteger(value int) RInteger

NewRInteger 创建一个新的整数对象

func (RInteger) Abs

func (i RInteger) Abs() RInteger

Abs 返回整数的绝对值

func (RInteger) Add

func (i RInteger) Add(other int) RInteger

Add 返回整数与原生 int 的和

func (RInteger) AddRInt

func (i RInteger) AddRInt(other RInteger) RInteger

AddRInt 返回两个 RInteger 的和

func (RInteger) AllBits

func (i RInteger) AllBits(mask RInteger) bool

AllBits 检查是否所有指定的位都是1

func (RInteger) AnyBits

func (i RInteger) AnyBits(mask RInteger) bool

AnyBits 检查是否任何指定的位是1

func (RInteger) BitAnd

func (i RInteger) BitAnd(other RInteger) RInteger

BitAnd 返回两个整数的按位与结果

func (RInteger) BitAt

func (i RInteger) BitAt(pos RInteger) RInteger

BitAt 返回整数指定位置的值

func (RInteger) BitLength

func (i RInteger) BitLength() int

BitLength 返回表示此整数的二进制形式的位数

func (RInteger) BitNot

func (i RInteger) BitNot() RInteger

BitNot 返回整数的按位取反结果

func (RInteger) BitOr

func (i RInteger) BitOr(other RInteger) RInteger

BitOr 返回两个整数的按位或结果

func (RInteger) BitXor

func (i RInteger) BitXor(other RInteger) RInteger

BitXor 返回两个整数的按位异或结果

func (RInteger) Ceil

func (i RInteger) Ceil() RInteger

Ceil 返回整数的向上取整结果

func (RInteger) CeilDiv

func (i RInteger) CeilDiv(other RInteger) RInteger

CeilDiv 返回两个整数的向上取整除法结果

func (RInteger) CeilWithPrecision

func (i RInteger) CeilWithPrecision(digits RInteger) RInteger

CeilWithPrecision 返回整数指定精度的向上取整结果

func (RInteger) Chr

func (i RInteger) Chr() RString

Chr 返回整数对应的 Unicode 字符

func (RInteger) Coerce

func (i RInteger) Coerce(other Object) RArray

Coerce 将另一个对象转换为兼容类型

func (RInteger) Digits

func (i RInteger) Digits(base ...int) RArray

Digits 将整数转换为按位数字的数组

func (RInteger) Div

func (i RInteger) Div(other int) RInteger

Div 返回整数与原生 int 的商

func (RInteger) DivMod

func (i RInteger) DivMod(other RInteger) RArray

DivMod 同时返回两个整数的商和余数

func (RInteger) DivRInt

func (i RInteger) DivRInt(other RInteger) RInteger

DivRInt 返回两个 RInteger 的商

func (RInteger) DownTo

func (i RInteger) DownTo(limit RInteger, fn func(RInteger))

DownTo 从当前值递减到指定值

func (RInteger) Equal

func (i RInteger) Equal(other Object) bool

Equal 比较两个整数是否相等

func (RInteger) Even

func (i RInteger) Even() bool

Even 检查整数是否为偶数

func (RInteger) FDiv

func (i RInteger) FDiv(other RInteger) float64

FDiv 返回两个整数的浮点除法结果

func (RInteger) Floor

func (i RInteger) Floor() RInteger

Floor 返回整数的向下取整结果

func (RInteger) FloorWithPrecision

func (i RInteger) FloorWithPrecision(digits RInteger) RInteger

FloorWithPrecision 返回整数指定精度的向下取整结果

func (RInteger) Gcd

func (i RInteger) Gcd(other RInteger) RInteger

Gcd 返回两个整数的最大公约数

func (RInteger) GcdLcm

func (i RInteger) GcdLcm(other RInteger) RArray

GcdLcm 同时返回两个整数的最大公约数和最小公倍数

func (RInteger) Lcm

func (i RInteger) Lcm(other RInteger) RInteger

Lcm 返回两个整数的最小公倍数

func (RInteger) LeftShift

func (i RInteger) LeftShift(count RInteger) RInteger

LeftShift 返回整数左移指定位数的结果

func (RInteger) Mod

func (i RInteger) Mod(other int) RInteger

Mod 返回整数与原生 int 的余数

func (RInteger) ModRInt

func (i RInteger) ModRInt(other RInteger) RInteger

ModRInt 返回两个 RInteger 的余数

func (RInteger) Modulo

func (i RInteger) Modulo(other int) RInteger

Modulo 返回整数与原生 int 的余数(Mod 的别名)

func (RInteger) ModuloRInt

func (i RInteger) ModuloRInt(other RInteger) RInteger

ModuloRInt 返回两个 RInteger 的余数(ModRInt 的别名)

func (RInteger) Mul

func (i RInteger) Mul(other int) RInteger

Mul 返回整数与原生 int 的积

func (RInteger) MulRInt

func (i RInteger) MulRInt(other RInteger) RInteger

MulRInt 返回两个 RInteger 的积

func (RInteger) Negative

func (i RInteger) Negative() bool

Negative 检查整数是否为负数

func (RInteger) Next

func (i RInteger) Next() RInteger

Next 返回整数的下一个值(Succ 的别名)

func (RInteger) NoBits

func (i RInteger) NoBits(mask RInteger) bool

NoBits 检查是否所有指定的位都是0

func (RInteger) Odd

func (i RInteger) Odd() bool

Odd 检查整数是否为奇数

func (RInteger) Ord

func (i RInteger) Ord() RInteger

Ord 返回整数本身

func (RInteger) Positive

func (i RInteger) Positive() bool

Positive 检查整数是否为正数

func (RInteger) Pow

func (i RInteger) Pow(exponent int) RInteger

Pow 返回整数与原生 int 的幂

func (RInteger) PowRInt

func (i RInteger) PowRInt(exponent RInteger) RInteger

PowRInt 返回两个 RInteger 的幂

func (RInteger) Pred

func (i RInteger) Pred() RInteger

Pred 返回整数的前一个值

func (RInteger) RightShift

func (i RInteger) RightShift(count RInteger) RInteger

RightShift 返回整数右移指定位数的结果

func (RInteger) Round

func (i RInteger) Round() RInteger

Round 返回整数的四舍五入结果

func (RInteger) RoundWithPrecision

func (i RInteger) RoundWithPrecision(digits RInteger) RInteger

RoundWithPrecision 返回整数指定精度的四舍五入结果

func (RInteger) Size

func (i RInteger) Size() int

Size 返回整数的字节表示长度

func (RInteger) Sub

func (i RInteger) Sub(other int) RInteger

Sub 返回整数与原生 int 的差

func (RInteger) SubRInt

func (i RInteger) SubRInt(other RInteger) RInteger

SubRInt 返回两个 RInteger 的差

func (RInteger) Succ

func (i RInteger) Succ() RInteger

Succ 返回整数的下一个值

func (RInteger) Times

func (i RInteger) Times(fn func(RInteger))

Times 执行指定次数的操作

func (RInteger) ToBase

func (i RInteger) ToBase(base RInteger) RString

ToBase 将整数转换为指定进制的字符串

func (RInteger) ToBin

func (i RInteger) ToBin() RString

ToBin 将整数转换为二进制字符串

func (RInteger) ToFloat

func (i RInteger) ToFloat() float64

ToFloat 将整数转换为浮点数

func (RInteger) ToHex

func (i RInteger) ToHex() RString

ToHex 将整数转换为十六进制字符串

func (RInteger) ToInt

func (i RInteger) ToInt() RInteger

ToInt 返回整数本身

func (RInteger) ToInteger

func (i RInteger) ToInteger() RInteger

ToInteger 返回整数本身

func (RInteger) ToOct

func (i RInteger) ToOct() RString

ToOct 将整数转换为八进制字符串

func (RInteger) ToRString

func (i RInteger) ToRString() RString

ToRString 将整数转换为字符串

func (RInteger) ToRational

func (i RInteger) ToRational() *big.Rat

ToRational 将整数转换为有理数

func (RInteger) ToString

func (i RInteger) ToString() string

ToString 返回整数的字符串表示

func (RInteger) Truncate

func (i RInteger) Truncate() RInteger

Truncate 返回整数的截断结果

func (RInteger) TruncateWithPrecision

func (i RInteger) TruncateWithPrecision(digits RInteger) RInteger

TruncateWithPrecision 返回整数指定精度的截断结果

func (RInteger) UpTo

func (i RInteger) UpTo(limit RInteger, fn func(RInteger))

UpTo 从当前值递增到指定值

func (RInteger) Value

func (i RInteger) Value() int

Value 返回整数的底层值

func (RInteger) Zero

func (i RInteger) Zero() bool

Zero 检查整数是否为零

type RString

type RString struct {
	BaseObject
	// contains filtered or unexported fields
}

RString 实现了类似 Ruby 的字符串功能

func NewRString

func NewRString(s string) RString

NewRString 创建一个新的字符串对象

func (RString) Capitalize

func (s RString) Capitalize() RString

Capitalize 将字符串首字母大写

func (RString) Center

func (s RString) Center(width int, padStr ...string) RString

Center 返回居中后的字符串,使用指定字符填充

func (RString) Chars

func (s RString) Chars() RArray

Chars 返回字符串中的所有字符组成的数组

func (RString) Chomp

func (s RString) Chomp() RString

Chomp 去除字符串末尾的换行符

func (RString) Concat

func (s RString) Concat(other RString) RString

Concat 将两个字符串连接并返回新字符串

func (RString) Count

func (s RString) Count(substr string) int

Count 计算指定子串在字符串中出现的次数

func (RString) Downcase

func (s RString) Downcase() RString

Downcase 将字符串转换为小写

func (RString) Each

func (s RString) Each(fn func(RString))

Each 对字符串中的每个字符执行指定操作

func (RString) EachLine

func (s RString) EachLine(fn func(RString))

EachLine 对字符串中的每一行执行指定操作

func (RString) Empty

func (s RString) Empty() bool

Empty 检查字符串是否为空

func (RString) EndsWith

func (s RString) EndsWith(suffix string) bool

EndsWith 检查字符串是否以指定的后缀结束

func (RString) Equal

func (s RString) Equal(other Object) bool

Equal 比较两个字符串是否相等

func (RString) Gsub

func (s RString) Gsub(pattern, repl string) RString

Gsub 使用正则表达式进行全局替换

func (RString) Include

func (s RString) Include(substr string) bool

Include 检查字符串是否包含指定的子串

func (RString) Index

func (s RString) Index(substr string) int

Index 返回子串在字符串中第一次出现的位置,不存在则返回-1

func (RString) Inspect

func (s RString) Inspect() string

Inspect 返回字符串的可打印形式(带引号)

func (RString) Length

func (s RString) Length() int

Length 返回字符串的长度(按 Unicode 字符计算)

func (RString) Ljust

func (s RString) Ljust(width int, padStr ...string) RString

Ljust 返回左对齐的字符串,使用指定字符填充

func (RString) Match

func (s RString) Match(pattern string) bool

Match 检查字符串是否匹配指定的正则表达式

func (RString) Ord

func (s RString) Ord() int

Ord 返回字符串第一个字符的 Unicode 码点值

func (RString) RIndex

func (s RString) RIndex(substr string) int

RIndex 返回子串在字符串中最后一次出现的位置,不存在则返回-1

func (RString) ReplaceAll

func (s RString) ReplaceAll(old, new string) RString

ReplaceAll 替换字符串中的所有匹配项

func (RString) Reverse

func (s RString) Reverse() RString

Reverse 返回字符串的反转副本

func (RString) Rjust

func (s RString) Rjust(width int, padStr ...string) RString

Rjust 返回右对齐的字符串,使用指定字符填充

func (RString) Size

func (s RString) Size() int

Size 返回字符串的长度(Length 的别名)

func (RString) Slice

func (s RString) Slice(start, end int) RString

Slice 返回指定范围的子串

func (RString) SliceFrom

func (s RString) SliceFrom(start int) RString

SliceFrom 返回从指定位置开始到字符串结尾的子串

func (RString) Split

func (s RString) Split(sep string) RArray

Split 按照指定的分隔符分割字符串

func (RString) StartsWith

func (s RString) StartsWith(prefix string) bool

StartsWith 检查字符串是否以指定的前缀开始

func (RString) Strip

func (s RString) Strip() RString

Strip 去除字符串两端的空白字符

func (RString) Sub

func (s RString) Sub(pattern, repl string) RString

Sub 使用正则表达式替换第一个匹配项

func (RString) SwapCase

func (s RString) SwapCase() RString

SwapCase 返回大小写互换后的字符串

func (RString) Times

func (s RString) Times(n int) RString

Times 返回重复指定次数的字符串

func (RString) ToCamelCase

func (s RString) ToCamelCase() RString

ToCamelCase 将字符串转换为驼峰命名

func (RString) ToInt

func (s RString) ToInt() (int, error)

ToInt 将字符串转换为整数

func (RString) ToSnakeCase

func (s RString) ToSnakeCase() RString

ToSnakeCase 将字符串转换为蛇形命名

func (RString) ToString

func (s RString) ToString() string

ToString 返回字符串的值

func (RString) Upcase

func (s RString) Upcase() RString

Upcase 将字符串转换为大写

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL