elixir模擬ruby快速複製字串
Ruby中用乘號可以快速的複製字串,如
irb> "*" * 5 # => "*****"
作為語法向ruby看齊的elixir,怎麼說也得有這個才行啊。elixir的Kernel模組中只是中規中矩的實現了普通數字乘法(用的是Erlang的方法),自己動手便是極好的。
直接上程式碼:
defmodule MyOp do
@moduledoc """
Override the multiply operator
"""
defmacro __using__(_) do #近期還會推出關於Elixir超程式設計的內容。到時候會詳細講解巨集的知識
quote do
import MyOp
import Kernel, except: [*: 2]
end
end
defmacro lv * rv when is_bitstring(lv) and is_integer(rv) and rv > 0 do
list = append(lv,[],rv)
quote do
unquote(list)
end
end
defmacro lv * rv do
quote do
unquote(lv) * unquote(rv)
end
end
defp append(char, list, n) when n == 1 do
[char|list] |> IO.chardata_to_string
end
defp append(char, list, n) when n > 1 do
append(char, [char|list], n-1)
end
end
這段簡單的程式碼實現了為原有乘法符號新加功能的目的,包含了幾個知識點:
- 巨集與超程式設計
- import和unimport(覆蓋Kernel中的實現)
- using巨集
- 函式遞迴實現的迴圈
- 字串和列表
- 私有函式
- 衛兵語句
等等。
可以參考《Elixir中文入門教程》相關章節以及官網上的文章學習。
它的用法就很類似ruby了:
iex> use MyOp
iex> IO.puts "*" * 5
"*****"
:ok
相關文章
- Ruby/Elixir學習小記
- 前端模擬使用者的複製操作前端
- 垂直柱狀圖(模擬+字串)字串
- OJ刷題之《複製字串》字串
- YT15-HDU-字串的模擬字串
- Python是否支援複製字串呢?Python字串
- Elixir語言在Ruby社群很火,語法類似Ruby,本質卻是Erlang! - preslavR語言
- ruby 字串學習2字串
- wrf模擬的domain圖繪製AI
- 定製Android模擬器skinAndroid
- C++ Builder 中對listview模擬複製某個單元格的內容C++UIView
- 模擬實現字串函式strlen , strcpy ,strcmp字串函式
- Altair SimSolid複雜裝配體無網格快速結構模擬研討會AISolid
- Ruby 札記 - 閒理字串字串
- 快速搭建streams表級複製環境
- C# unsafe 快速複製陣列C#陣列
- unity3d表格模擬繪製Unity3D
- 模擬多次曝光攝影製作教程
- 分享一個仿微信模擬器,可以快速模擬微信對話,微信紅包等。
- Altair SimSolid功能介紹 無網格快速結構模擬 衡祖模擬AISolid
- 【模擬設計】模擬技術在智慧製造中的作用;智慧製造難點在模型,焦點在模擬;汽車行業CAE研究模型行業
- hihocoder 1264 神奇字串 (列舉+模擬)字串
- Altair SimSolid複雜裝配體無網格快速結構模擬線上研討會AISolid
- 淺複製和深複製的概念與值複製和指標複製(引用複製)有關 淺複製 “指標複製 深複製 值複製指標
- ruby 字串學習筆記1字串筆記
- ruby 字串學習筆記3字串筆記
- ruby字串學習筆記4字串筆記
- ruby字串學習筆記5字串筆記
- Android模擬器繪製實現概述Android
- 12.3 實現模擬滑鼠錄製回放
- excel表格複製貼上格式怎麼能一模一樣 表格怎麼複製一個一模一樣的Excel
- Java引用複製、淺複製、深複製Java
- JS物件複製:深複製和淺複製JS物件
- 異構資料庫間批量表快速複製資料庫
- 【C語言】字串複製。(不能使用strcpy函式)C語言字串函式
- Ruby小記--字串轉字元陣列字串字元陣列
- 【Matlab】BFSK的調製與解調模擬Matlab
- Matlab實現模擬調製與解調Matlab