ruby 函数

函数

lambda? :判断proc对象是proc还是lambda
.arity :获取proc对象的参数个数,当有*修饰的可变参数时返回一个负数(-n-1),n表示对象必须有n个参数
clone :拷贝数据(冻结和受污染状态也会被拷贝)
dup :拷贝数据(不会拷贝状态)
freeze:冻结对象(冻结对象不可被改变)
frozen?: 是否被冻结
taint:污染
untaint: 接触污染
tainted?:是否被污染
4.upto(6){|x|} :integer 常用迭代器之一 #  456
4.downto(1){|x|} :integer 常用迭代器之一 #  4321
3.times{|x|} :integer 常用迭代器之一 # 012
2.3.4 :295 > 3.times
 => #<Enumerator: 3:times>  # 返回Enumerator对象
0.step :浮点数数值迭代
each{|x|} :Array Hash Range  等许多类都有此迭代器
each_with_index do |line,number|  代码区 end :基于each的迭代器
collect : 也叫做map 为所有元素执行代码块,将返回值组合到数组并返回
[1,2,3].collect{|x| x*x} # =>  [1,4,9]
select : 为所有元素执行代码块,选取返回值不是false或nil的元素组合到数组并返回
(1..10).select{|x| x%2 == 0} #=> [2,4,6,8,10]
reject : 为所有元素执行代码块,选取返回值是false或nil的元素组合到数组并返回
(1..10).reject{|x| x%2 == 0} #=> [1,3,5,7,9]
inject : 第一个参数是上次迭代的返回值,第二个参事是迭代对象的下一个元素
data = [2,5,3,4]
data.inject {|sum,x| sum+x}   # => 14 (2+5+3+4)
data.inject(1.0){|p,x| p*x} # => 120.0  (1.0*2*5*3*4)
data.inject {|m,x| m>x? m : x} # => 5
枚举器的方法:Enumerable  
obj.to_enum :实例枚举器的常用方法,object对象的(不带代码块)
obj.enum_for(:each_char).map{|c| c.succ} : 带代码块
2.3.4 :291 > s = "hello"
 => "hello" 
2.3.4 :292 > s.enum_for(:each_char).map{|x| x.succ}
 => ["i", "f", "m", "m", "p"] 
2.3.4 :293 > 
str.chars : char数组
iterator = 9.downto(1)
begin
  p iterator.next while true
  rescue StopIteration
  p "finsh"
end   :外部迭代器的写法,外部迭代器比内部迭代器更加的灵活
iterator = 9.downto(1)
loop do
  p iterator.next
end :简化rescue从句而包含的一个隐式从句外部迭代器语句
2.3.4 :008 > def itttttt(xxxxx)
2.3.4 :009?>   loop do
2.3.4 :010 >       yield xxxxx.next
2.3.4 :011?>     end
2.3.4 :012?>   end
 => :itttttt 
2.3.4 :013 > itttttt(9.downto(1)){|x| p x} # => 9 8 7 6 5 4 3 2 1

函数解析

array[0]  # same as:array.[] 0    array 有个名为[]的函数,参数只有一个 0
array[0]='aaaa' #same as: array.[]= 0,'aaaa'  array有个名为[]= 的函数 参数有两个0,'aaaa'
obj.m = v # 解释器解释为  obj.m= {v}
o.m += 1 # same as: o.m=(o.m()+1)
o[x] -= 2 # same as: o.[]= (x,o.[](x) - 2)

操作符

  1. 展开操作符:*
    右值以开头,则意味他是一个数组,她的每个元素都应该是一个右值
    左值以
    开头(左侧只能有一个*),则意味所有多出来的右值都放入一个数组且赋给该左值
2.3.4 :186 >   x,y,z = 1,*[2,3] #same as:x,y,z = 1,2,3
 => [1, 2, 3] 
2.3.4 :187 > x
 => 1 
2.3.4 :188 > y
 => 2 
2.3.4 :189 > z
 => 3 
2.3.4 :190 > x,*y = 1,2,3
 => [1, 2, 3] 
2.3.4 :191 > x
 => 1 
2.3.4 :192 > y
 => [2, 3] 
  1. 追加 位移:<< >>
    二进制左右位移
2.3.4 :220 > 172.to_s(2)
 => "10101100" 
2.3.4 :221 > two = 172.to_s(2).to_i(2)
 => 172 
2.3.4 :222 > two >> 1
 => 86 
2.3.4 :223 > 86.to_s(2)
 => "1010110" 
2.3.4 :224 > two << 1
 => 344 
2.3.4 :225 > 344.to_s(2)
 => "101011000" 
2.3.4 :226 > 

字符串追加:

2.3.4 :212 > message = "message"
 => "message" 
2.3.4 :213 > message << "is mes"
 => "messageis mes" 
2.3.4 :214 > message
 => "messageis mes" 
2.3.4 :215 > 

===,=,! :这三个我特么也不是很懂啊。。。。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,723评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,003评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,512评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,825评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,874评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,841评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,812评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,582评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,033评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,309评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,450评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,158评论 5 341
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,789评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,409评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,609评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,440评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,357评论 2 352

推荐阅读更多精彩内容

  • Ruby虽然是一个完全面向对象的语言,但是在它的发展过程中,也在不断的借鉴函数式编程的思想,来帮助改进语言的特性。...
    falm阅读 1,986评论 1 9
  • 命令行参数 新建文件 hello.rb 执行 输出 读取文件 新建文件 read.rb 执行 逐行查找 新建文件 ...
    饥人谷_若愚阅读 750评论 0 1
  • 字符串处理函数1.返回字符串的长度 str.length => integer 2.判断字符串中是否包含另一个串 ...
    小安静子阅读 959评论 0 1
  • 本来想写一篇关于数组遍历处理函数的总结的,写着写着发现还是得把这两个函数单独抽出了讲上一讲,我是直接跳进injec...
    又不行了阅读 1,916评论 0 0
  • 看到上图这么微商我是拒绝的,然而今天在女友非常强烈的安利下,我勉为其难试了下她的这条皮裤。 我!的!天!非常非常非...
    叫我女王陛下阅读 205评论 0 0