我无法弄清此代码在这里做什么。我能说的最好的是是位的,还是 ->是用于lambda的,但仍然无法整体上有意义。
pipe = Thread | -> (p) do
end
代码还没有任何作用。这是一个正确的(但有点奇怪(语法,而定义的lambda无需做任何事情。
|
不咬合或,这是Thread
类的方法名称,对于ruby-thread
GEM:
require 'thread/pipe'
p = Thread |-> d { d * 2 } |-> d { d * 4 }
p << 2
puts ~p # => 16
但是您是对的,但是可以打电话给方法|
,而无需在Thread
和方法名称之间使用.
,因为Ruby的语法允许2 | 3
之类的代码作为2.|(3)
的糖。
没有宝石,Ruby抱怨NoMethodError
。要播放语法,您可以尝试:
class Thread
def self.|(some_proc)
some_proc.call("some_param")
end
end
pipe = Thread | -> (p) do
puts "Inside a proc, called from 'Thread.|' with parameter #{p}"
end
它输出:
Inside a proc, called from 'Thread.|' with parameter some_param
另一种打电话的方式将是:
pipe = Thread.|( lambda{|param| puts "Inside a proc, called from 'Thread.|' with parameter #{param}"} )