成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Ruby nil概念詳解

開發 開發工具
Ruby nil的意思實際上是false的意思,當我們選取某個對象的屬性時,首先要判斷的就是對象是否為nil,就是是否為false。

Ruby語言在實際應用中可以幫助我輕松的解決許多問題。在這里我們將會為大家詳細解讀有關Ruby nil的一些概念,希望能對大家的學習有些幫助。#t#

我們常常處理這樣的代碼:

name=person?person.name:nil

取某個對象的一個屬性,先判斷對象是否為nil,不是Ruby nil就返回對象屬性,否則返回nil。這樣的代碼寫多了比較惡心,是否有比較有趣的方式來減少代碼?作者給出了一段代碼:

 

  1. module ObjectExtension  
  2. def nil_or  
  3. return self unless self.nil?  
  4. o = Object.new  
  5. class << o 
  6. def method_missing(sym,
     *args); nil; end  
  7. end  
  8. o  
  9. end  
  10. end  
  11. class Object  
  12. include ObjectExtension  
  13. end 

 

上面的代碼為Object加入了擴展,為每個對象實例增加了一個nil_or方法,分析下這個方法:如果對象不為Ruby nil,馬上返回self(也就是對象本身),否則生成一個新的對象,這個對象通過method_missing機制將所有的方法調用都返回nil(原文是用Class.new,生成的類將不會被GC,這里采用回復給出的方案,生成對象,在對象的metaclass上做method_missing)。那么現在代碼可以寫成:

name=person.nil_or.name是不是相當的DSL呢?

責任編輯:曹凱 來源: ddvip.com
相關推薦

2009-12-18 15:24:52

2009-12-16 16:24:00

Ruby on Rai

2009-12-14 18:14:27

Ruby DSL

2009-12-17 11:27:31

Ruby時間方法

2009-12-15 15:55:43

Ruby模塊

2009-12-18 15:56:05

Ruby特殊語法

2009-10-27 14:25:08

2009-12-16 10:57:16

Ruby文件鎖

2009-12-18 17:20:00

Ruby核心類

2009-12-16 14:33:21

Ruby哈希表

2009-12-16 16:44:31

Ruby on Rai

2009-12-18 09:43:32

Ruby偽變量

2009-12-18 15:06:10

Ruby常用庫

2009-12-16 09:13:05

Ruby賦值語句

2023-09-14 09:54:01

Btrfs文件系統

2010-05-17 13:39:10

MySQL Clust

2015-03-13 09:36:09

NULLnullptr

2010-02-02 11:16:28

C++異常

2010-07-12 13:20:18

UML協作圖

2010-07-14 15:23:19

Perl文件句柄
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲精品九九 | 午夜爽爽爽男女免费观看影院 | 午夜在线视频 | 黄免费在线 | 青青久在线视频 | 国产在线二区 | 91视频在线网站 | 伊人影院在线观看 | www.久草.com| 国产999精品久久久久久 | 中文av网站 | 综合视频在线 | 日韩毛片在线观看 | 一区二区三区高清在线观看 | 91看片网 | 插插插干干干 | 欧美日韩国产三级 | 日韩精品一区二区三区在线观看 | 欧美日韩a | 成人av片在线观看 | 在线亚洲免费 | 日本aⅴ中文字幕 | 在线成人一区 | 国产成人网| 日韩色综合 | 成人在线一区二区三区 | 国产在线精品一区二区三区 | 国产精品视频偷伦精品视频 | 欧美成人a∨高清免费观看 老司机午夜性大片 | 国产黄色麻豆视频 | jizz在线免费观看 | 日本五月婷婷 | 日韩精品国产精品 | 亚洲国产精品一区二区www | 天天夜碰日日摸日日澡 | 国产综合精品 | 日韩av在线中文字幕 | 国产精品综合色区在线观看 | 我要看黄色录像一级片 | 久热精品在线播放 | 国产伦精品一区二区三区照片91 |