W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
~r/foo/i
相當(dāng)于使用一個(gè)二進(jìn)制數(shù)和一個(gè)字符列表作為參數(shù)調(diào)用sigil_r
:iex> sigil_r(<<"foo">>, 'i')
~r"foo"i
我們可以通過(guò)sigil_r
獲取~r
印記的文檔:
iex> h sigil_r
...
我們也可以簡(jiǎn)單地在sigil_{identifier}
模式之后添加需要實(shí)現(xiàn)的函數(shù)來(lái)自定義我們的印記.例如,讓我們用~i
印記來(lái)返回一個(gè)整數(shù)(使用修飾符n
可以將其變?yōu)樨?fù)數(shù)):
iex> defmodule MySigils do
...> def sigil_i(string, []), do: String.to_integer(string)
...> def sigil_i(string, [?n]), do: -String.to_integer(string)
...> end
iex> import MySigils
iex> ~i(13)
13
iex> ~i(42)n
-42
印記也可以在宏的幫助下進(jìn)行編譯時(shí)工作.例如,在編譯源代碼時(shí),Elixir中的正則表達(dá)式會(huì)被編譯成一個(gè)高效的表示方法,在運(yùn)行時(shí)就可以跳過(guò)此步驟.如果你對(duì)此感興趣,我們建議你學(xué)習(xí)宏的知識(shí),并了解印記是如何在Kernel
模塊中被實(shí)現(xiàn)的(sigil_*
函數(shù)就是在那里定義的).
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: