V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Newyorkcity
V2EX  ›  问与答

大家是否在初学 Rx(响应式扩展,经典如 RxJs, RxJava)时,觉得它的写法反过来会更好理解?

  •  1
     
  •   Newyorkcity · 2022-01-15 19:56:31 +08:00 · 1827 次点击
    这是一个创建于 1022 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我 订阅了 报纸,或者说,我向某家报纸发行商订阅了每日晨报。
    ->
    I subscribe a newspaper or I subscribe a <newspaper company>


    那在 Rx 的概念里,newspaper company 有数据(也就是每日晨报)要发送,是一个可订阅或者说可 Observe 的东西,所以应该是 Observable 的一个实例)。

    而『我』抽象出来的话应该是一个 Observer 类型(具有订阅的能力,并且在获得到订阅的东西后有一些行为)

    所以写成代码后应该是 I.subscribe(newspaperCompany)

    然而

    interface Observable<T> {
    Subscription subscribe( Observer s )
    }

    所以 RxJava 里应该写成 newspaperCompany.subscribe(I)

    就让我非常难顶。

    实在不行,这个方法名能不能从 subscribe 改成 register 啊,

    newspaperCompany.register(I) --> 报纸发行商把订阅报纸的我注册在要发每日晨报的名单里了 我一下子就觉得好理解和舒服得多

    这里为什么这么设计呢?

    谢谢
    13 条回复    2022-01-16 11:47:53 +08:00
    cmdOptionKana
        1
    cmdOptionKana  
       2022-01-15 20:03:59 +08:00
    单听你说的,我觉得也很有道理,蹲一下看看别人怎么说
    ipwx
        2
    ipwx  
       2022-01-15 20:07:18 +08:00
    反正不符合语法。

    真正符合语法的是 I subscribe to a newspaper
    mx8Y3o5w3M70LC4y
        3
    mx8Y3o5w3M70LC4y  
       2022-01-15 20:21:37 +08:00 via iPhone
    你打别人电话时,如果对方挂断会有一个英文提示。the subscriber you dialed is busy now ,你猜为什么你打电话的那个人,是 subscriber 呢?
    Newyorkcity
        4
    Newyorkcity  
    OP
       2022-01-15 20:33:44 +08:00
    @ipwx
    @lvdb

    这 subscribe 这个不会像 除以和除那样 subscribe to 是除以,subscribe 是除吧。。。。。
    o02VFqu3gZnZfX8n
        5
    o02VFqu3gZnZfX8n  
       2022-01-15 20:38:35 +08:00 via Android   ❤️ 1
    一点是方便链式调用

    报纸被发行商出版.被邮递配送.被某人阅读

    调用链没有嵌套,是平的
    ipwx
        6
    ipwx  
       2022-01-15 20:41:41 +08:00
    @Newyorkcity 没有这种用法。
    WoodenTea
        7
    WoodenTea  
       2022-01-15 20:42:45 +08:00
    我已经使用 RxJava 开发 Android 4 年, 开发的 Web 应用我也使用上了 RxJs.
    当你理解它的编程模式后, 尤其是 Android 开发, 那真的就是爽. 线程切换, 多线程控制执行, 网络请求重试, 请求内容或响应内容变换, 网络请求在应用指定生命周期自动关闭等. 这些使用熟练后写代码真是得心应手.
    Newyorkcity
        8
    Newyorkcity  
    OP
       2022-01-15 20:44:43 +08:00
    @WoodenTea 当初学时怎么理解透彻的有留下笔记不
    DrJekyll
        9
    DrJekyll  
       2022-01-15 20:56:11 +08:00   ❤️ 2
    客体思维,就是说英文经常以物作主语,多被动语态;而中文则多以人作主语,很少有被动。这里看到的 -- https://www.zhihu.com/question/29877577/answer/868178757 。感觉应该和这个有点关系。
    WoodenTea
        10
    WoodenTea  
       2022-01-15 20:56:29 +08:00   ❤️ 1
    @Newyorkcity 我有一个严重的缺点就是不会做笔记.
    我当时学习 RxJava 的时候是根据一名叫「扔物线 」的网友写的一篇文章开始的(现在网上还能搜索到), 我感觉最基本的功能都介绍到了.
    当时是 RxJava1, 现在是 RxJava3, 有几个关键字已经修改.
    luob
        11
    luob  
       2022-01-15 23:09:39 +08:00
    函数式语言就不会纠结这种语义,不管谁订阅谁都应该是 newspaper |> Observe.from |> Observe.subscribe me
    Mav
        12
    Mav  
       2022-01-16 10:22:14 +08:00 via iPhone   ❤️ 1
    你把 subscribe 理解成 addSubscription 是不是就好理解了?
    Newyorkcity
        13
    Newyorkcity  
    OP
       2022-01-16 11:47:53 +08:00
    @Mav 对 这就是我想说的。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2741 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 12:28 · PVG 20:28 · LAX 05:28 · JFK 08:28
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.