0

IE:

[1] pry(main)> @foo = rand
=> 0.46682153267547954
[6] pry(main)> multiply = -> () {@foo*2}
=> #<Proc:0x000000000121ac18@(pry):6 (lambda)>
[7] pry(main)> (multiply>>multiply).call
ArgumentError: wrong number of arguments (given 1, expected 0)
from (pry):6:in `block in __pry__'

有没有一种优雅的方式来解决这个问题?:-)

在我受到功能纯粹主义者的攻击之前,这不是代码高尔夫,即使我必须承认我很享受自己:P - 我正在尝试看看是否有一种很好的方法来使用函数组合来禁用集成测试中的事件跟踪使用基于回调的基础设施,其工作是浏览网页,它的唯一工作是在这个意义上操纵全局状态并执行类似的操作

    do_client_roundtrip around_client_return: method(:dont_trace_events) >> -> () {
      click_on "Continue"
      assert_invalid_session_page
    }

Ruby 的“一切都返回一些东西”在这里咬人,因为没有任何方法接受任何参数,并且 arity 检查会因此而感到不安。添加无用的论点只是为了满足我玩>>/的愿望<<是愚蠢的,所以我想知道我是否应该做一些不同的事情?

4

1 回答 1

0

函数组合只为一元函数定义,该术语甚至对空函数没有意义。(实际上,零函数本身没有意义,它与常量完全相同。)

“函数组合”的定义字面意思是“将一个函数的返回值作为参数传递给下一个函数”。您根本无法使用空函数进行函数组合。

于 2019-09-09T06:27:07.017 回答