修改、改进 RxGo 包

本文档介绍了在服务计算Homework06中对RxGo的改进,包括新增Distinct、ElementAt、First、Last、Skip、SkipLast、Take和TakeLast等过滤操作。通过阅读ReactiveX文档并理解其原理,作者实现了这些操作,并提供了测试和API文档。测试结果显示过滤操作功能正常。
摘要由CSDN通过智能技术生成

服务计算Homework06

  • 项目地址
  • 使用说明
  • 下载项目后直接输入命令go run "hw06\main.go"即可运行hw06/main.go展示filter对应功能
  • hw06/rxgo-master中的filter.go为实现filter对应功能的源码
  • hw06/rxgo-master中的filter_test.go为filter对应功能的gotest测试
  • 测试命令为go test -v "hw06\rxgo-master\filter_test.go" "hw06\rxgo-master\filter.go" "hw06\rxgo-master\generators.go" "hw06\rxgo-master\transforms.go" "hw06\rxgo-master\utility.go" "hw06\rxgo-master\rxgo.go"
  • apidoc为对应自动生成的API,下载好相关资源(apidoc文件夹中的所有文件)后打开apidoc/index.html即可看到生成的API
课程任务
  • 阅读 ReactiveX 文档。请在pmlpml/RxGo基础上,
    • 修改、改进它的实现
    • 或添加一组新的操作,如filtering
  • 该库的基本组成:
    • rxgo.go 给出了基础类型、抽象定义、框架实现、Debug工具等
    • generators.go 给出了 sourceOperater 的通用实现和具体函数实现
    • transforms.go 给出了 transOperater 的通用实现和具体函数实现
RxGo的简单使用

pmlpml/RxGo下载对应包并导入本地goworks路径

  1. 调用generators.go中定义的Just方法:使用,分行打印helloworld!
package main

import (
	"fmt"
	RxGo "hw06/rxgo-master"
)

func main() {
   
	RxGo.Just("Hello", "World", "!").Subscribe(func(x string) {
   
		fmt.Println(x)
	})
}

// output:
// Hello
// World
// !
  1. 函数链调用:调用generators.go中的start方法,通过source.operator1().operator2().operator3().subscribe(observer)方式进行链调用
    • 调用fibonacci(10)实现求出10以内的斐波那契数列
    • 调用map将结果×2
    • 调用Subscribe输出
package main

import (
	"fmt"
	RxGo "hw06/rxgo-master"
)

func fibonacci(max int) func() (int, bool) {
   
	a, b := 0, 1
	return func() (r int, end bool) {
   
		r = a
		a, b = b, a + b
		if r > max {
   
			end = true
		}
		return
	}
}

func main() {
   
	RxGo.Start(fibonacci(10)).Map(func(x int) int {
   
		return 2 * x
	}).Subscribe(func(x int) {
   
		fmt.Print(x)
	})
}

// output
// 022461016
  1. 连接的observables,与管道类似,不同的是,它在订阅时不会开始发送项目,而只有在调用其connect()方法时才会开始发送
package main

import (
	"fmt"
	RxGo "hw06/rxgo-master"
)

func main() {
   
    //define pipeline
	source := RxGo.Just
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值