Ruby block 如果只有一个参数能否省略,直接使用_ 表示。 向 Scala 类似

lilijreey · February 03, 2019 · Last by ecnelises replied at February 08, 2019 · 2178 hits
[1,2,3].map {|e| e+1}
[1,2,3].map {_+1} # 这样可以吗

不行,下划线在 ruby 里面代替可被忽略的参数,用来让你的代码更具有可读性 但是你可以


[1,2,3].map {|_| _+1}

[1,2,3].map(&:to_s)

to_s 有不是 +1

话说有谁知道 ruby 为何不支持这种写法?

Reply to lilijreey
to_s = lambda { |x| x + 1}
b = [1,2,3].map(&to_s)
p b

[1,2,3].map(&1.method(:+))

楼主又来抬杠了

Reply to mizuhashi

这写法高级啊,之前的没见过。 这应该是通过柯里化来实现的吧。

不能。你的例子可以 .map &:succ

Reply to mizuhashi

提问的智慧:

我在想能不能覆盖 method_missing 来实现一个这个

You need to Sign in before reply, if you don't have an account, please Sign up first.