【发布时间】:2018-03-05 07:02:24
【问题描述】:
我一直在练习 Dave Thomas 的 Programming in Elixir 的练习。我遇到了一个说要编写一个函数(由于某种原因称为caesar),它需要一个字符列表和一个整数来添加到字符列表中的每个元素,如果它超过'z',则循环回到'a',所以你应该可以这样称呼它
MyList.caesar('ryvke', 13)
它应该返回一个字符串。
我有一个映射列表并执行加法的函数,但它返回一个字符列表,我不知道如何将其转换为字符串:
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 上阅读有关 charlists 的信息
- 在关注this SO question 之后,尝试将其从字符列表转换为二进制,然后 然后 转换为字符串
基于最后一个项目符号的尝试导致:
MyList.caesar('ryvke', 13)
# => <<127, 194, 134, 194, 131, 120, 114>>
【问题讨论】:
标签: elixir