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

Ruby慣用法總結概覽

開發(fā) 開發(fā)工具
我們這次為大家介紹的Ruby慣用法包括:迭代;||=賦值 ;程序入口;預設變量和特殊記號;求和;交換等等。我們將會對此做一個詳細介紹。

Ruby最近是一個比較熱門的詞匯,許多程序員都開始將目光轉向這項語言。它存在著許多慣用法,下面就向大家總結了一些Ruby慣用法,作為參考對象。#t#

迭代

一般寫法:

for i in (1..10) puts i end

習慣寫法:

(1..10).each{|i| puts i}

1.upto(10){|i| puts i} # from njmzhang

||=賦值

一般寫法:

number = 1 if number.nil? number = 1 unless number

習慣寫法:

number ||= 1

程序入口

if __FILE__ == $0

if $PROGRAM_NAME == __FILE__

這個相當于main(), 邏輯判斷的意思當程序名($0或另一個)和當前文件名(__FILE__)一致時,也就是當前文件是被單獨執(zhí)行的而不是被別的文件調用。這個方法還有個用法是作為unit test使用。

預設變量和特殊記號

類似$0的Perl風格預設常量還有很多,參見Programming Ruby p319

其中比較常用的如$:代表庫搜索路徑,修改方法常見有: 代碼$:.unshift('buildscript') # from gigix 或 $: << File.join(File.dirname(__FILE__), 'CurrentClass')

后一種方法使用了相對路徑,因為Ruby的module不要求namespace和文件目錄結構要對應一致,很多時候統(tǒng)統(tǒng)放一個目錄里
%w格式化命令(from qiezi) 可以少打幾個引號

%w{a b c d} #

等價

['a', 'b', 'c', 'd']

``(~鍵下的撇號)用來執(zhí)行shell外部命令,如:

`help`
inject

一般寫法:

result = [] (1..10).each{|item| result << item}

習慣寫法:

(1..10).inject([]){|array, item| array << item}

inject有點難理解,相當于python的reduce和一些FP里的fold。inject的塊變量有兩個(這里是array和 item),第二個變量(item)用來枚舉被inject的集合(這里是(1..10)這個range), 而第一個變量(array)由inject的參數初始化(這里是[],可選),并在block被反復執(zhí)行時保持持久(相當于靜態(tài)變量),而item則在每 次枚舉時被更新為下一個值。

我們再看一下inject的另一種通常用法就會更明白了:

求和

(1..10).inject{|sum, item| sum += item}

這個等于

(1..10).inject(0){|sum, item| sum += item}

也就是塊變量sum被初始化成0然后反復迭代執(zhí)行塊的內容,最后返回sum,并行賦值 這個很多人都知道了,比如:

a,b = 0, 1 a,b = b, a #

交換

a,b

當然可以延伸出一些很詭異的變化,不提倡使用阿。

還有一個用法是讓函數返回“多個結果”(不是多個對象),如:

def test 1,2 end x, y = test #x = 1, y = 2

這個njmzhang說的很對,其實函數返回的是一個array,然后再并行匹配到變量上去。(所以我對多個結果特別加了引號) 這顯然是個syntax sugar,你隨便用逗號分割幾個變量是不會自動組成array的。

注意這種并行匹配當兩遍不平衡時會造成的問題:

a,b = [1,2,3] # a = 1, b = 2, 3

被丟棄

a,b,c = [1,2] # a = 1, b = 2, c = nil

被初始化成nil

*的匹配 一般來說*用于把一個array展開:

a, *b = [1,2,3] #a = 1, b = [2,3]

類似FP里的x:xs(haskell), x::xs(ocaml), [a | b] (erlang from 布娃娃)

rescue簡單用法

begin 1/0 rescue puts 'wrong' end

可以簡化為

1/0 rescue puts 'wrong'

責任編輯:曹凱 來源: 百度博客
相關推薦

2015-07-13 09:46:44

Java習慣用法

2009-12-17 13:46:01

Ruby表單語句

2011-06-09 15:15:52

RAII

2017-09-05 09:17:47

Java編程用法總結

2024-02-01 00:10:21

C++PIMPL編程

2009-12-29 13:43:26

WPF URI

2010-01-26 17:05:37

Android缺點

2009-12-24 13:46:03

WPF控件

2024-02-02 12:42:42

C++Policy模板

2015-12-28 13:45:53

Windows 10照片應用

2009-12-14 15:04:32

Ruby性能特點

2009-12-23 18:16:35

WPF布局控件

2010-03-05 16:38:48

Python應用范圍

2009-12-07 16:44:45

PHP圖形處理函數

2009-12-16 14:40:14

Ruby控制結構

2009-12-17 14:29:50

Ruby on Rai

2009-12-17 11:27:31

Ruby時間方法

2009-12-14 13:27:06

Ruby區(qū)間

2009-12-14 17:48:46

Ruby String

2010-02-06 09:59:54

C++ void使用規(guī)
點贊
收藏

51CTO技術棧公眾號