V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
washbrain
V2EX  ›  程序员

调用类函数,比如 A.runAction(B)的时候, A 是作为主语还是宾语去理解比较好?

  •  
  •   washbrain · 2022-07-15 18:15:12 +08:00 · 970 次点击
    这是一个创建于 652 天前的主题,其中的信息可能已经有所发展或是发生改变。

    背景: 最近在看 Rxjs 的入门教程,看到 Observable.subscribe(observer), 第一反应是看到 Observable 去订阅 observer ,但这显然和框架本身表达的意思不一样,应该是 observer 去订阅 Observable 才对。让我来写这样的 api ,我感觉就会写成 Observable.beSubscribedBy(observer )了==

    可能是我孤陋寡闻吧,感觉 A.runAction(B)这样的语法,一般都是 A 作为主语;但是 Rxjs 这个场景好像是 A 作为宾语?还有其他类似的例子吗?还是说我本身的理解就是错的

    英语相当不行,也不太了解 Rx api 设计背后的规范,还请各位海涵 Orz

    5 条回复    2022-07-16 09:13:18 +08:00
    humbass
        1
    humbass  
       2022-07-15 18:22:48 +08:00
    大部分操作都可以用 ES6 的 PROXY 直接解决。

    Rxjs 实际上是早期 写给 JAVA 这类后端程序员在用数据同步框架。
    MakHoCheung
        2
    MakHoCheung  
       2022-07-15 20:38:26 +08:00
    响应式框架这里确实比较让人迷惑,按道理是订阅者去订阅发布者的,之前看过一个 stackoverflow 的帖子专门讨论这个,但是忘了内容
    charlie21
        3
    charlie21  
       2022-07-15 21:01:08 +08:00
    Observable.subscribe(observer)

    这里的 observable 可以是 of() 的返回值,它代表一个(可以被订阅的)内容发送器
    subscribe() 调用时刻就是开始时刻
    通常的用法是 subscribe(data => { 这里直接处理 data })

    至于 lz 说的这个问题,它这里的 observer 是迭代器模式里的 “迭代器 (iterator)”:迭代器具有 next 方法,可以一次一次读到数据,故而有异步的意味

    however, 迭代器这个东西在编程语言里往往是蕴含在流程控制里了,在同步编程直接 for 循环就 OK 了 不需要声明一个 iterator 再调用它进入循环;在异步编程里直接 subscribe 就 OK 了 不需要声明一个 iterator 再调用它来激活订阅。具有迭代器意味的东西都被隐藏起来了

    迭代器模式和观察者模式 https://hijiangtao.github.io/2020/01/13/RxJS-Introduction-and-Actions/
    secondwtq
        4
    secondwtq  
       2022-07-16 00:45:17 +08:00
    要按照 SVO 的规则去套的话,很多都说不通的

    比如 list.add(element),其实是 "add element to list",list 是双宾语之一,主语是啥?不知道
    非要给这个神秘的主语一个名字的话,那就叫“有关部门”好了。觉得不够接地气的话可以用“系统”,这个词简直就是挨踢领域的“有关部门”。

    还有什么 mutex.lock(), timer.stop(),都不能细想的

    然后再看 Rx 源码里面怎么写的: https://github.com/dotnet/reactive/blob/85f1eb7c53e27cccdbeee3e0b044916168843fcc/Rx.NET/Source/src/System.Reactive/ObservableBase.cs#L21
    > Subscribes the given observer to the observable sequence.
    AllenHua
        5
    AllenHua  
       2022-07-16 09:13:18 +08:00
    Observable.subscribe(observer)

    英语里词根后缀 able 代表有什么样的能力,主语 Observable 表达的应该是具有观察能力的一类事物,有多种实现(所以没有写成 observer ),是主语。

    subscribe 很明显是动词

    observer 也很明显是宾语,是名词。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5403 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 08:14 · PVG 16:14 · LAX 01:14 · JFK 04:14
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.