Ruby中變量引用時(shí)的一些注意點(diǎn)
在表達(dá)式中,當(dāng)Ruby看到像a這樣的名字時(shí),它需要判斷a是一個(gè)局部變量引用還是對沒有參數(shù)的方法a的調(diào)用。Ruby使用一種啟發(fā)式的方法來判斷這種情況。當(dāng)Ruby解析源代碼文件時(shí),它會記錄所有已經(jīng)被賦值的符號。它認(rèn)為這些符號是變量。以后當(dāng)遇到一個(gè)既可以是變量又可以是方法調(diào)用的符號時(shí),Ruby會檢查是否已經(jīng)對該符號進(jìn)行了賦值。如果是,那么把該符號當(dāng)作變量,否則當(dāng)作方法調(diào)用。下面是描述這種情況的一個(gè)人為設(shè)計(jì)的例子。
def a print "Funciton 'a' called\n" 99 end for i in 1..2 if i ==2 print "a=",a,"\n" else a=1 print "a=",a,"\n" end end
輸出結(jié)果:
a=1 Function 'a' called a=99
當(dāng)解析的時(shí)候,Ruby看到第一個(gè)print語句使用了a,并且由于還沒有遇到對a的任意賦值語句,所以把它當(dāng)作方法調(diào)用。但是當(dāng)解析到第二個(gè)print語句時(shí),由于Ruby遇到了對a的一個(gè)賦值語句,所以把它當(dāng)作變量
注意賦值語句不一定被執(zhí)行--只要Ruby看到它了就可以。下面的程序不會導(dǎo)致錯(cuò)誤
a=1 if false;a
相關(guān)文章
學(xué)習(xí)Ruby你需要了解的相關(guān)知識(rvm, gem, bundle, rake, rails等)
這篇文章主要介紹了學(xué)習(xí)Ruby你需要了解的相關(guān)知識(rvm, gem, bundle, rake, rails等),需要的朋友可以參考下2014-06-06Ruby on Rails基礎(chǔ)之新建項(xiàng)目
Ruby on Rails 是一個(gè)可以使你開發(fā),部署,維護(hù) web 應(yīng)用程序變得簡單的框架。下面我們就來看看如何簡單便捷的使用這一框架,本系列文章將一一為大家揭秘2016-02-02實(shí)例講解Ruby中的鉤子方法及對方法調(diào)用添加鉤子
鉤子方法即是在普通的方法上添加"鉤子",使特定事件發(fā)生時(shí)可以被調(diào)用,下面就來以實(shí)例講解Ruby中的鉤子方法及對方法調(diào)用添加鉤子2016-06-06使用Ruby on Rails快速開發(fā)web應(yīng)用的教程實(shí)例
這篇文章主要介紹了使用Ruby on Rails快速開發(fā)web應(yīng)用的教程實(shí)例,本文來自于IBM官方技術(shù)文檔,需要的朋友可以參考下2015-04-04淺談Rails 4 中Strong Parameters機(jī)制
本文主要是通過Rails3中的Parameters與Rails4中新引入的Strong Parameters機(jī)制進(jìn)行對比,從而得出他們直接的異同2014-06-06