偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

Ruby nil概念詳解

開發(fā) 開發(fā)工具
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機制將所有的方法調(diào)用都返回nil(原文是用Class.new,生成的類將不會被GC,這里采用回復給出的方案,生成對象,在對象的metaclass上做method_missing)。那么現(xiàn)在代碼可以寫成:

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

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

2009-12-18 15:24:52

2009-12-16 16:24:00

Ruby on Rai

2009-12-18 15:56:05

Ruby特殊語法

2009-12-14 18:14:27

Ruby DSL

2009-12-15 15:55:43

Ruby模塊

2009-12-17 11:27:31

Ruby時間方法

2009-10-27 14:25:08

2009-12-16 10:57:16

Ruby文件鎖

2009-12-16 14:33:21

Ruby哈希表

2009-12-18 17:20:00

Ruby核心類

2009-12-16 16:44:31

Ruby on Rai

2009-12-18 15:06:10

Ruby常用庫

2009-12-16 09:13:05

Ruby賦值語句

2009-12-18 09:43:32

Ruby偽變量

2015-03-13 09:36:09

NULLnullptr

2023-09-14 09:54:01

Btrfs文件系統(tǒng)

2010-05-17 13:39:10

MySQL Clust

2010-02-02 11:16:28

C++異常

2010-07-12 13:20:18

UML協(xié)作圖

2009-12-28 16:54:30

WPF注釋
點贊
收藏

51CTO技術棧公眾號