foreach - 在 Erlang 中理解和使用 foreach

标签 foreach erlang

我的任务是用 7 种语言完成凯撒密码。我目前正在 Erlang 上完成它。我之前接触过函数式语言,所以我大致了解我需要做什么。我特别难以理解 Erlang 中 foreach 函数的用法。我知道当您对副作用感兴趣时会使用它,所以我很确定这是做我想做的事情的“正确”方法。我读过this answer以及Erlang语言中foreach的定义引用here 。但是,我仍然有点困惑,并且无法正确理解语法。

-module(caesar).
-export([main/2]).  

enc(Char,Key) when (Char >= $A) and (Char =< $Z) or
               (Char >= $a) and (Char =< $z) -> 
Offset = $A + Char band 32, N = Char - Offset,
Offset + (N + Key) rem 26;

enc(Char, _Key) ->  Char.

encMsg(Msg, Key) ->
   lists:map(fun(Char) -> enc(Char, Key) end, Msg).

main(Message, Key) -> 

Encode = (Key), 
Decode = (-Key),
Range = lists:seq(1,26),

io:format("Message: : ~s~n", [Message]),
Encrypted = encMsg(Message, Encode),
Decrypted = encMsg(Encrypted, Decode),

io:format("Encrypted:  ~s~n", [Encrypted]), 
io:format("Decrypted: ~s~n", [Decrypted]),
io:format("Solution: ").
    %% Foreach belongs here, should execute Encrypted = encMsg(Message, N) where
    %% N is the value in Range for each value in the list, and then print Encrypted.

最佳答案

语法类似于您已经编写的lists:map。这需要乐趣和 list 。乐趣应该有一个论据。它将被称为传递列表中的每个值。

lists:foreach(fun(N) ->
                      Encr = encMsg(Message, N),
                      io:format("Key:~p Encrypted: ~p",[N,Encr])
              end, Range).

关于foreach - 在 Erlang 中理解和使用 foreach,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16111542/

相关文章:

erlang - 如何让行为回调函数不被实现?

erlang - 如何在氮中调用erlang函数?

erlang - 在 Erlang 中写入随机访问文件

erlang - 有关 Erlang 中生成函数的更多信息

C# 在按下按钮时跳出循环

perl - 如何构造哈希的哈希

php - TCPDF - 以两列布局循环数据

javascript - JavaScript 中的 for 循环与 forEach —— 书中的示例

erlang - 使用它进行 JSON 数据传输

Javascript forEach - 如何循环一个对象?