Ruby基礎(chǔ)語法初探
創(chuàng)建字符串對(duì)象有多種途徑,最常用的可能是使用字符串字面量(literals),即一組單引號(hào)或雙引號(hào)之間的字符序列。這兩種形式的區(qū)別在于,當(dāng)構(gòu)造字面量時(shí),Ruby對(duì)字符串所做處理的多少有所不同。Ruby對(duì)單引號(hào)串處理得很少。除了極少的一些例外。鍵入到字符串字面量的內(nèi)容就構(gòu)成了這個(gè)字符串的值。
Ruby對(duì)雙引號(hào)字符串有更多的處理。首先,它尋找以反斜線開始的序列,并用二進(jìn)制值替換它們。其中最常見的是\n,它會(huì)被回車換行符替換掉。當(dāng)一個(gè)包含回車換行符的字符串輸出時(shí),\n會(huì)強(qiáng)制換行。
puts "And good night, \nGrandma"
輸出結(jié)果:
And good night, Grandma
Ruby對(duì)雙引號(hào)字符串所做的第二件事情是字符串內(nèi)的表達(dá)式內(nèi)插(expression interpolation),#{表達(dá)式}序列會(huì)被“表達(dá)式”的值替換??梢杂眠@種方式重寫前面的方法。
def say_goodnight(name) result = "Good night,#{name}" return result end puts say_goodnight('Pa')
輸出結(jié)果:
Good night, Pa
Ruby 構(gòu)建這個(gè)字符串對(duì)象時(shí),它找到name的當(dāng)前值并把它替換到字符串中。任意復(fù)雜的表達(dá)式都允許放在#{...}結(jié)構(gòu)中。這里調(diào)用在所有字符串中定義的capitalize方法,將參數(shù)的首字母改為大寫之后輸出。
def say_goodnight(name) result = "Good night,#{name.capitalize}" return result end puts say_goodnight('uncle')
輸出結(jié)果:
Good night, Uncle
為了方便起見,如果表達(dá)式只是一個(gè)全局實(shí)例或類變量,則不需要提供花括號(hào)。
$greeting = "Hello" #$greeting 是全局變量 @name = "Prudence" #@name 是實(shí)例變量 puts "#$greeting,#@name"
輸出結(jié)果:
Hello,Prudence
可以進(jìn)一步簡(jiǎn)化這個(gè)方法。Ruby方法所返回的值,是最后一個(gè)被求值的表達(dá)式的值,所以可以把這個(gè)臨時(shí)變量和return語句都去掉。
def say_goodnight(name) "Good night,#{name}" end puts say_goodnight('Ma')
輸出結(jié)果:
Good night, Ma
Ruby使用一種命名慣例來區(qū)分名稱的用途:名稱的第一個(gè)字符顯示這個(gè)名稱如何被使用。局部變量、方法參數(shù)和方法名稱都必須以小寫字母或下劃線開始。全局變量都有美元符號(hào)($)為前綴,而實(shí)例變量以“at”(@)符號(hào)開始。類變量以兩個(gè)“at”(@@)符號(hào)開始。最后,類名稱、模塊名稱和常量都必須以一個(gè)大寫字母開始。
從上述規(guī)定的初始字符之后開始,名稱可以是字母、數(shù)字和下劃線的任意組合(但跟在@符號(hào)之后的符號(hào)不能是數(shù)字)。但是按慣例,包含多個(gè)單詞的實(shí)例變量名稱在詞與詞之間使用下劃線連接,包含多個(gè)單詞的類變量名稱使用混合大小寫(每個(gè)單次首字母大寫)。方法名稱可以?、!和=字符結(jié)束。
相關(guān)文章
在Ruby on Rails中優(yōu)化ActiveRecord的方法
這篇文章主要介紹了在Ruby on Rails中優(yōu)化ActiveRecord的方法,本文來自于IBM官方網(wǎng)站技術(shù)文檔,需要的朋友可以參考下2015-04-04Ruby實(shí)現(xiàn)的刪除已經(jīng)合并的git分支腳本分享
這篇文章主要介紹了Ruby實(shí)現(xiàn)的刪除已經(jīng)合并的git分支腳本分享,本文給出腳本代碼、使用方法和執(zhí)行結(jié)果,需要的朋友可以參考下2015-01-01對(duì)Ruby on Rails進(jìn)行高效的單元測(cè)試的教程
這篇文章主要介紹了在Ruby on Rails中進(jìn)行高效的單元測(cè)試的教程,使用到了Ruby的RSpec和Factory Girl框架,需要的朋友可以參考下2015-04-04Ruby on Rails在Ping ++ 平臺(tái)實(shí)現(xiàn)支付
本文給大家分享的是使用Ruby on Rails在Ping ++ 平臺(tái)實(shí)現(xiàn)支付功能的代碼,非常的實(shí)用,有需要的小伙伴可以參考下。2016-02-02使用Ruby on Rails和PostgreSQL自動(dòng)生成UUID的教程
這篇文章主要介紹了使用Ruby on Rails和PostgreSQL自動(dòng)生成UUID的教程,主要利用到了PostgreSQL的插件uuid-ossp,需要的朋友可以參考下2015-04-04Ruby單元測(cè)試框架TestUnit的替代者M(jìn)iniTest介紹
這篇文章主要介紹了Ruby單元測(cè)試框架TestUnit的替代者M(jìn)iniTest介紹,本文先是對(duì)比了TestUnit、MiniTest的優(yōu)劣,然后給出了MiniTest的使用示例,需要的朋友可以參考下2015-03-03Ruby中使用Block、Proc、lambda實(shí)現(xiàn)閉包
這篇文章主要介紹了Ruby中使用Block、Proc、lambda實(shí)現(xiàn)閉包,在編程領(lǐng)域我們可以通俗的說:子函數(shù)可以使用父函數(shù)中的局部變量,這種行為就叫做閉包,需要的朋友可以參考下2014-06-06