2
我一直在從Dave Thomas的Programming in Elixir開始練習。我遇到了一個寫一個函數(出於某種原因稱爲caesar
),它需要一個charlist和一個整數來添加到charlist中的每個元素,如果它經過'z'循環回到'a',所以你應該可以這樣稱呼它將代碼點(或二進制)的列表轉換爲字符串
MyList.caesar('ryvke', 13)
,它應該返回一個字符串。
我有一個映射在列表上,並執行增加了一個功能,但它返回一個charlist,我無法弄清楚如何將其轉換爲字符串:
defmodule MyList do
def caesar(list, n) do
Enum.map list, &(perform_addition(&1, n))
|> to_charlist
|> to_string
end
defp perform_addition(char_val, n) when char_val < 122 do
char_val + n
end
defp perform_addition(_, n) do
97 + n
end
end
我試着:
- 閱讀the docs on binaries, strings, and charlists
- 上ElixirSchool
- 試圖把它從charlist轉換爲二進制一個閱讀有關charlists第二然後到以下this後的字符串SO質疑
基礎上,最後一顆子彈的嘗試導致:
MyList.caesar('ryvke', 13)
# => <<127, 194, 134, 194, 131, 120, 114>>