Elixir: 魔術符號

~s

字符串轉義ui

iex(65)> ~s(this is a string with "double" quotes, not 'single' ones)
"this is a string with \"double\" quotes, not 'single' ones"

有時候你本身手工轉義可能會產生引號不配對的問題, 這個魔術符號幫組你避免一些轉義上的錯誤.this

大寫的-S, 通常用於編寫文檔, 支持多行文本編碼

@doc ~S"""
Converts double-quotes to single-quotes.
## Examples

    iex> convert("\"foo\"")
    "'foo'"

"""

~c

字符列表atom

iex(66)> ~c(this is a char list containing 'single quotes')
'this is a char list containing \'single quotes\''

~w

單詞列表, 用於構造列表, 支持三種修飾符 a(atom), c(char), s(string)code

iex(68)> ~w(name mail tel)a
[:name, :mail, :tel]

iex(69)> ~w(name mail tel)s
["name", "mail", "tel"]

iex(70)> ~w(name mail tel)c
['name', 'mail', 'tel']

做爲一種構造列表的語法糖, 它能夠幫助你節省不少字符的輸入.orm

最後

Erlang默認如今是UTF-8編碼, 所以魔術符號是支持中文的, 下面來個有用點的例子, 用於隨機生成百家姓:element

family_names.exs文檔

defmodule FamilyNames do
  require Logger
  def main do
    family_names = ~w(
      趙 錢 孫 李 周 吳 鄭 王 馮 陳 褚 衛 蔣 沈 韓 楊 朱 秦 尤 許
      何 呂 施 張 孔 曹 嚴 華 金 魏 陶 姜 戚 謝 鄒 喻 柏 水 竇 章
      雲 蘇 潘 葛 奚 範 彭 郎 魯 韋 昌 馬 苗 鳳 花 方 俞 任 袁 柳
      酆 鮑 史 唐 費 廉 岑 薛 雷 賀 倪 湯 滕 殷 羅 畢 郝 鄔 安 常
      樂 於 時 傅 皮 卞 齊 康 伍 餘 元 卜 顧 孟 平 黃 和 穆 蕭 尹
      姚 邵 湛 汪 祁 毛 禹 狄 米 貝 明 臧 計 伏 成 戴 談 宋 茅 龐
      熊 紀 舒 屈 項 祝 董 粱 杜 阮 藍 閔 席 季 麻 強 賈 路 婁 危
      江 童 顏 郭 梅 盛 林 刁 鍾 徐 邱 駱 高 夏 蔡 田 樊 胡 凌 霍
      虞 萬 支 柯 昝 管 盧 莫 經 房 裘 繆 幹 解 應 宗 丁 宣 賁 鄧
      鬱 單 杭 洪 包 諸 左 石 崔 吉 鈕 龔 程 嵇 邢 滑 裴 陸 榮 翁
      荀 羊 於 惠 甄 麴 家 封 芮 羿 儲 靳 汲 邴 糜 鬆 井 段 富 巫
      烏 焦 巴 弓 牧 隗 山 谷 車 侯 宓 蓬 全 郗 班 仰 秋 仲 伊 宮
      寧 仇 欒 暴 甘 鈄 厲 戎 祖 武 符 劉 景 詹 束 龍 葉 幸 司 韶
      郜 黎 薊 薄 印 宿 白 懷 蒲 邰 從 鄂 索 鹹 籍 賴 卓 藺 屠 蒙
      池 喬 陰 欎 胥 能 蒼 雙 聞 莘 黨 翟 譚 貢 勞 逄 姬 申 扶 堵
      冉 宰 酈 雍 舄 璩 桑 桂 濮 牛 壽 通 邊 扈 燕 冀 郟 浦 尚 農
      溫 別 莊 晏 柴 瞿 閻 充 慕 連 茹 習 宦 艾 魚 容 向 古 易 慎
      戈 廖 庾 終 暨 居 衡 步 都 耿 滿 弘 匡 國 文 寇 廣 祿 闕 東
      毆 殳 沃 利 蔚 越 夔 隆 師 鞏 厙 聶 晁 勾 敖 融 冷 訾 辛 闞
      那 簡 饒 空 曾 毋 沙 乜 養 鞠 須 豐 巢 關 蒯 相 查 後 荊 紅
      遊 竺 權 逯 蓋 益 桓 公 万俟 司馬 上官 歐陽 夏侯 諸葛
      聞人 東方 赫連 皇甫 尉遲 公羊 澹臺 公冶 宗政 濮陽
      淳于 單于 太叔 申屠 公孫 仲孫 軒轅 令狐 鍾離 宇文
      長孫 慕容 鮮于 閭丘 司徒 司空 亓官 司寇 仉 督 子車
      顓孫 端木 巫馬 公西 漆雕 樂正 壤駟 公良 拓跋 夾谷
      宰父 穀梁 晉 楚 閆 法 汝 鄢 塗 欽 段幹 百里 東郭 南門
      呼延 歸 海 羊舌 微生 嶽 帥 緱 亢 況 後 有 琴 梁丘 左丘
      東門 西門 商 牟 佘 佴 伯 賞 南宮 墨 哈 譙 笪 年 愛 陽 佟
      第五 言 福
    )
    len = :erlang.length(family_names)
    index = :rand.uniform(len)
    family_name = :lists.nth(index, family_names)
    Logger.info family_name
  end
end
FamilyNames.main

下面的erlang手冊中的說明:字符串

nth(N, List) -> Elem

Types:

    N = integer() >= 1
        1..length(List)
    List = [T, ...]
    Elem = T
    T = term()

Returns the Nth element of List. For example:    

> lists:nth(3, [a, b, c, d, e]).
c

從中, 能夠看出 :lists.nth/2 的第一個參數是從1開始的, 這點須要注意.string

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息