浏览 2708 次
锁定老帖子 主题:[Ruby 1.9] 超箭头运算符
精华帖 (16) :: 良好帖 (0) :: 灌水帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-04-28
最后修改:2009-04-28
class Proc; def -@; self; end; end 试一下: p = ------------------> x{x + 1} p[1] have fun. ----------------------------> --------------------------------------------------------------------------------------> -------------------------------------------------> <------------------------------------------------------------------------------------------------------ 有个更舒服的做法: gem install superators Jay Phillips 写道 require 'superators' class Array superator "<-----------------" do |operand| self << operand.reverse end end [1,2,3] <----------------- [1,2,3] #=> [1,2,3,3,2,1] 注意,和上面不同,多一个减号或者少一个都不成立哦。 Jay Phillips 是 Rails 后另一个杀手级应用 Adhearson 的作者。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-04-28
返回self太无趣了……要是带curry还能有趣点
irb(main):001:0> class Proc; def -@; if self.arity > 1 then -> x {self.curry[x]} else self; end; end; end => nil irb(main):002:0> a = -----> x,y { x + y } => #<Proc:0x1a54a8c@(irb):1 (lambda)> irb(main):003:0> a[2][3] => 5 irb(main):004:0> a[2,3] ArgumentError: wrong number of arguments (2 for 1) from (irb):4:in `[]' from (irb):4 from E:/build_area/ruby191/bin/irb.bat:20:in `<main>' |
|
返回顶楼 | |
发表时间:2009-04-28
原来有 curry 这个函数…… 赶紧记下来~~
|
|
返回顶楼 | |
发表时间:2009-04-28
RednaxelaFX 写道 返回self太无趣了……要是带curry还能有趣点
irb(main):001:0> class Proc; def -@; if self.arity > 1 then -> x {self.curry[x]} else self; end; end; end => nil irb(main):002:0> a = -----> x,y { x + y } => #<Proc:0x1a54a8c@(irb):1 (lambda)> irb(main):003:0> a[2][3] => 5 irb(main):004:0> a[2,3] ArgumentError: wrong number of arguments (2 for 1) from (irb):4:in `[]' from (irb):4 from E:/build_area/ruby191/bin/irb.bat:20:in `<main>' self.curry 就可以了,已经包含 arity 的判断 |
|
返回顶楼 | |
发表时间:2009-04-28
night_stalker 写道 self.curry 就可以了,已经包含 arity 的判断
要玩嘛不是么 =v= Proc#curry之后参数列表就变成可变长度的了,arity就会变成-1。如果有办法不用Proc#curry的话会更舒服…… |
|
返回顶楼 | |
发表时间:2009-04-28
RednaxelaFX 写道 night_stalker 写道 self.curry 就可以了,已经包含 arity 的判断
要玩嘛不是么 =v= Proc#curry之后参数列表就变成可变长度的了,arity就会变成-1。如果有办法不用Proc#curry的话会更舒服…… 加个减号就 curry ,我已经很满足了…… |
|
返回顶楼 | |
发表时间:2009-04-30
最后修改:2009-04-30
deleted
|
|
返回顶楼 | |