저는 Elixir를 처음 접했고 기타 탭 문제를 해결하려고합니다. 내 코드 :익명 함수 내에서 명명 된 함수 변수 업데이트하기 Elixir
def sumTabs([head|tail], result) do
nextLine = hd(tail)
tail = List.delete(tail, nextLine)
head
|> Enum.with_index
|> Enum.each(fn({x, i}) ->
s = [x <> Enum.at(nextLine, i) |> to_charlist]
IO.inspect s
result = [result | s]
IO.inspect result end)
result
end
내가 처음에 빈 목록 인 결과를 업데이트 할,하지만 Enum.each 기능의 각 반복에서, 결과가 비어 있습니다. 나는 그것이 익명의 기능 때문이라고 생각한다.
처음에는 최소한 두 줄을 사용하고 싶습니다.
입력 :
tab = """
e|-7-----7-----7-----7-----5-----3-----3-----2-----0-----0-----|
B|---0-----0-----0-----0-----0-----0-----0-----0-----0-----0---|
G|-----0-----0-----0-----0-----0-----0-----0-----0-----0-----0-|
D|-------------------------------------------------------------|
A|-------------------------------------------------------------|
E|-------------------------------------------------------------|
"""
출력 : sumTabs 기능 이전
['eB']
[[], 'eB']
['||']
[[], '||']
['--']
[[], '--']
['7-']
[[], '7-']
['--']
[[], '--']
['-0']
[[], '-0']
['--']
[[], '--']
['--']
[[], '--']
['--']
[[], '--']
['7-']
[[], '7-']
['--']
[[], '--']
['-0']
[[], '-0']
['--']
[[], '--']
['--']
[[], '--']
['--']
[[], '--']
['7-']
[[], '7-']
['--']
[[], '--']
['-0']
[[], '-0']
['--']
[[], '--']
['--']
[[], '--']
['--']
[[], '--']
['7-']
[[], '7-']
['--']
[[], '--']
['-0']
[[], '-0']
['--']
[[], '--']
['--']
[[], '--']
['--']
[[], '--']
['5-']
[[], '5-']
['--']
[[], '--']
['-0']
[[], '-0']
['--']
[[], '--']
['--']
[[], '--']
['--']
[[], '--']
['3-']
[[], '3-']
['--']
[[], '--']
['-0']
[[], '-0']
['--']
[[], '--']
['--']
[[], '--']
['--']
[[], '--']
['3-']
[[], '3-']
['--']
[[], '--']
['-0']
[[], '-0']
['--']
[[], '--']
['--']
[[], '--']
['--']
[[], '--']
['2-']
[[], '2-']
['--']
[[], '--']
['-0']
[[], '-0']
['--']
[[], '--']
['--']
[[], '--']
['--']
[[], '--']
['0-']
[[], '0-']
['--']
[[], '--']
['-0']
[[], '-0']
['--']
[[], '--']
['--']
[[], '--']
['--']
[[], '--']
['0-']
[[], '0-']
['--']
[[], '--']
['-0']
[[], '-0']
['--']
[[], '--']
['--']
[[], '--']
['--']
[[], '--']
['||']
[[], '||']
코드 : 엘릭서에서
defmodule TabPlayer do
def parse(tab) do
String.split(tab, "\n")
|> Enum.map(fn n -> to_string n end)
|> List.delete([])
|> Enum.map(fn n -> String.graphemes n end)
|> sumTabs([])
|> IO.inspect
end
감사합니다. 하지만 다음 함수 호출을 위해 "acc"변수를 줄 수 있을까요? 아니면 나중에 어떻게할까요? – Projectionist
'result = head |> ...'와 같이 최종 값을 저장할 수 있습니다. 'Enum.reduce'는'acc'의 마지막 값을 반환합니다. 그게 당신이 의미 한 것입니까? – Dogbert
예, 완벽합니다, 감사합니다! – Projectionist