ELisp編程六:定義變數

來源:互聯網
上載者:User

給變數賦值

set

(set arg1 arg2) 這種文法將arg2設定為arg1的值

比如:

 (set ‘flowers '(rose violet daisy buttercup))

這是建立了一個symbol flowers,將(rose violet daisy buttercup) list 賦值給了flowers的value域。

稍後,可以直接使用flowers,就像用變數一樣,實際上是使用的它的value域存放的list,比如:

(print flowers)

也將輸出(rose violet daisy buttercup)

注意,單引號在這裡是告訴解析器不要試圖對flowers和(rose violet daisy buttercup)求值。

如果set語句去除flowers前面的單引號,那麼flowers就會被求值。因為這裡flowers還沒有被定義,求值就會錯誤,會看到如下錯誤:

error: (void-variable flowers)

應該還是很好理解的。

setq

setq語句是set的簡化版本,當set的第一個參數如果要加單引號的話,就可用setq來簡化。比如下面的用法:

(setq flowers '(rose violet daisy buttercup))

setq還支援一次多定義幾個symbol,比如:

(setq trees '(pine fir oak maple)           herbivores '(gazelle antelope zebra))

defvar

和set有差別:

1.如果一個變數沒有值,則賦給它初始值

2.如果一個變數已經有值,則什麼也不做

3.提供了一個字串參數用於描述這個變數。

(defvar 變數名 變數值  "變數描述文檔")

C-h v 可以看到該變數的描述文檔

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.