匿名関数への外部値を修正、私はまだルビーから来エリクサーを学んでいるように私はこれについて間違った道を進んだことを絶対的に確信しています...エリクシール - まず
私はのリストを取得YouTubeからの検索結果を表示し、最も多く閲覧した動画を抽出しようとしています。
# html is the contents of the search results page
metas = html |> Floki.find(".yt-lockup-meta-info > li")
counter = -1
index = -1
high_views = 0
Enum.each(metas, fn(li) ->
counter = counter + 1
text = Floki.text(li)
case String.split(text, " ") do
[count, "views"] ->
views = String.to_integer(String.replace(count, ",", ""))
IO.puts(">>> #{counter} - #{to_string(views)} views")
if views > high_views do
high_views = views
index = counter
end
[age, time_measurement, "ago"] ->
nil
end
end)
metas
このようなli
タプルのリストです:
[{"li", [], ["2 years ago"]}, {"li", [], ["5,669,783 views"]},
{"li", [], ["9 years ago"]}, {"li", [], ["17,136,804 views"]},
...
{"li", [], ["1 year ago"]}, {"li", [], ["15,217 views"]},
{"li", [], ["8 years ago"]}, {"li", [], ["909,053 views"]}]
Enum.each
に渡された匿名関数は、独自のスコープを持ち、index
の値を設定していないので、これは動作しませんおよびhigh_views
。
外部スコープの値を匿名関数に渡す方法はありますか?それとももっと良い質問ですが、これをやってどうすればいいですか?
私はそれを動作させ、その後コードをリファクタリングすることを意図しましたが、私は立ち往生しています。助けてくれてありがとう。
'Enum.sort_by(items、&view_count/1)'へのソートを単純化する 'Enum.sort_by'があります。 –