自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Ruby nil概念詳解

開發(fā) 開發(fā)工具
Ruby nil的意思實(shí)際上是false的意思,當(dāng)我們選取某個(gè)對(duì)象的屬性時(shí),首先要判斷的就是對(duì)象是否為nil,就是是否為false。

Ruby語言在實(shí)際應(yīng)用中可以幫助我輕松的解決許多問題。在這里我們將會(huì)為大家詳細(xì)解讀有關(guān)Ruby nil的一些概念,希望能對(duì)大家的學(xué)習(xí)有些幫助。#t#

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

name=person?person.name:nil

取某個(gè)對(duì)象的一個(gè)屬性,先判斷對(duì)象是否為nil,不是Ruby nil就返回對(duì)象屬性,否則返回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加入了擴(kuò)展,為每個(gè)對(duì)象實(shí)例增加了一個(gè)nil_or方法,分析下這個(gè)方法:如果對(duì)象不為Ruby nil,馬上返回self(也就是對(duì)象本身),否則生成一個(gè)新的對(duì)象,這個(gè)對(duì)象通過method_missing機(jī)制將所有的方法調(diào)用都返回nil(原文是用Class.new,生成的類將不會(huì)被GC,這里采用回復(fù)給出的方案,生成對(duì)象,在對(duì)象的metaclass上做method_missing)。那么現(xiàn)在代碼可以寫成:

name=person.nil_or.name是不是相當(dāng)?shù)腄SL呢?

責(zé)任編輯:曹凱 來源: ddvip.com
相關(guān)推薦

2009-12-18 15:24:52

2009-12-16 16:24:00

Ruby on Rai

2009-12-15 15:55:43

Ruby模塊

2009-12-17 11:27:31

Ruby時(shí)間方法

2009-12-14 18:14:27

Ruby DSL

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賦值語句

2015-03-13 09:36:09

NULLnullptr

2010-05-17 13:39:10

MySQL Clust

2023-09-14 09:54:01

Btrfs文件系統(tǒng)

2009-12-31 16:56:40

Silverlight

2010-02-02 11:16:28

C++異常

2010-07-12 13:20:18

UML協(xié)作圖
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)