두 목록을 반복하고 결과 목록에 추가하면 빈 목록이 반환됩니다. 왜?

둥근 위기

다음 코드를 실행하면 빈 목록이 반환되지만 그 이유는 확실하지 않습니다. 제 생각에는 for 루프에서 반복하는 것이 아직 이해하지 못하는 효과가 있다는 것입니다. 결과 목록을 변경 가능하도록 변경하면 모든 것이 작동한다는 것을 알고 있습니다. fileNames게임 사이에는 관계가 없습니다 (즉, 일대일 일치 할 필요가없는 게임 또는 파일 수)

let createList (fileNames: string list) = 
    let games = [ "DMC";"Aztez"]    
    let result = List.empty<(string * string)>                
    for filename in fileNames do
        for game in games do
            let a = [filename, game] 
            result = result @ a
    result

두 for 루프 내부의 줄에는 "이 표현식에는 'unit'유형이 있어야하지만 'bool'유형이 있어야합니다. 표현식의 결과를 삭제하려면 'ignore'를 사용하고 결과를 바인딩하려면 'let'을 사용합니다. 이름에. "

아래 코드에는 예상되는 동작이 있습니다.

let createListM (fileNames: string list) = 
    let games = [ "DMC";"Aztez"]    
    let mutable result = List.empty<(string * string)>                
    for filename in fileNames do
        for game in games do
            let a = [filename, game] 
            result <- result @ a
    result

하지만 변경 가능한 목록을 사용할 필요가 없다면 더 좋을 것입니다.

요약하자면 a) 첫 번째 코드 샘플 결과가 비어있는 이유를 알고 싶습니다. 새 값에 @가 추가되지 않는 이유는 무엇입니까? (::도 시도했습니다) b)이 작업을 수행하는 더 좋은 방법이 있습니까?

감사

남자 이름

경고에서 알 수 있듯이

result = result @ a

bool목록 resultresult @ a같은지 여부를 나타내는로 평가됩니다 . 이 부울은 폐기됩니다. 따라서 for 루프는 두 컬렉션을 반복하고 사용되지 않는 bool의 수를 계산합니다.

yield를 사용하여 가변 변수를 사용하는 대신 목록 이해력을 만들 수 있습니다.

let createListM (fileNames: string list) = 
    let games = [ "DMC";"Aztez"]                
    [for filename in fileNames do
        for game in games do
            yield (filename, game)]

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

목록을 제거하면 빈 값이 반환됩니다.

분류에서Dev

Hibernate 쿼리가 빈 결과 목록을 반환합니다.

분류에서Dev

두 개의 목록을 반복하고 항목을 결합

분류에서Dev

두 목록을 반복하고 결과적으로 세 번째 목록이 생성됨

분류에서Dev

두 목록을 결합하면 IEnumerable C # Entity Framework에서 IEnumerable이 반환됩니다.

분류에서Dev

두 목록을 비교하고 일치하지 않을 경우 각 목록에 빈 행을 추가합니다.

분류에서Dev

결과 목록이 빈 목록이 될 때까지 목록을 반복합니다.

분류에서Dev

빈 목록과 연결하면 목록이 반환되지만 새 목록과 연결할 때 반환되지 않는 이유는 무엇입니까?

분류에서Dev

HTML tr을 구문 분석하면 빈 목록이 반환됩니다.

분류에서Dev

목록 이해가 빈 목록을 반환하지 않습니다.

분류에서Dev

두 목록이 파이썬과 일치하면 빈 세트를 반환합니다.

분류에서Dev

전체 열을 반복하고 결과를 목록에 저장

분류에서Dev

C # XML을 목록으로 구문 분석하면 빈 목록이 반환됩니다.

분류에서Dev

모든 다음 목록을 이전 목록과 비교하고 고유 목록을 저장하여 Python의 목록 목록을 반복합니다.

분류에서Dev

왜 retainAll ()이 빈 목록을 반환합니까?

분류에서Dev

목록을 반복하고 새 목록에 값 추가

분류에서Dev

목록을 반복하고 새 목록에 추가

분류에서Dev

Java-두 목록을 반복하고 비교 한 다음 다른 목록에 추가

분류에서Dev

두 목록을 비교하고 세 번째 목록 .net 4.0에서 차이를 반환합니다.

분류에서Dev

사전의 목록을 반복하고 목록의 목록과 비교

분류에서Dev

LINQ 두 목록을 비교하고 결과를 하나의 목록에 넣기

분류에서Dev

빈 목록이 반환됩니까?

분류에서Dev

Excel에서 두 목록을 비교하고 고유 항목과 중복 항목을 찾습니다.

분류에서Dev

두 개의 사전 목록을 반복하고 루프없이 튜플 목록을 만듭니다.

분류에서Dev

동시에 두 개의 목록을 반복하고 한 목록의 숫자가 다른 목록의 항목보다 큰지 확인합니다.

분류에서Dev

목록을 포함하고 연결된 두 모델을 통해 반복 Django

분류에서Dev

getSqlMapClientTemplate (). queryForList ()가 결과 목록을 반환하지 않습니다.

분류에서Dev

Scala는 두 시퀀스를 반복하고 목록에 추가합니다.

분류에서Dev

Python-개별 빈 목록을 반복하고 행 선택

Related 관련 기사

  1. 1

    목록을 제거하면 빈 값이 반환됩니다.

  2. 2

    Hibernate 쿼리가 빈 결과 목록을 반환합니다.

  3. 3

    두 개의 목록을 반복하고 항목을 결합

  4. 4

    두 목록을 반복하고 결과적으로 세 번째 목록이 생성됨

  5. 5

    두 목록을 결합하면 IEnumerable C # Entity Framework에서 IEnumerable이 반환됩니다.

  6. 6

    두 목록을 비교하고 일치하지 않을 경우 각 목록에 빈 행을 추가합니다.

  7. 7

    결과 목록이 빈 목록이 될 때까지 목록을 반복합니다.

  8. 8

    빈 목록과 연결하면 목록이 반환되지만 새 목록과 연결할 때 반환되지 않는 이유는 무엇입니까?

  9. 9

    HTML tr을 구문 분석하면 빈 목록이 반환됩니다.

  10. 10

    목록 이해가 빈 목록을 반환하지 않습니다.

  11. 11

    두 목록이 파이썬과 일치하면 빈 세트를 반환합니다.

  12. 12

    전체 열을 반복하고 결과를 목록에 저장

  13. 13

    C # XML을 목록으로 구문 분석하면 빈 목록이 반환됩니다.

  14. 14

    모든 다음 목록을 이전 목록과 비교하고 고유 목록을 저장하여 Python의 목록 목록을 반복합니다.

  15. 15

    왜 retainAll ()이 빈 목록을 반환합니까?

  16. 16

    목록을 반복하고 새 목록에 값 추가

  17. 17

    목록을 반복하고 새 목록에 추가

  18. 18

    Java-두 목록을 반복하고 비교 한 다음 다른 목록에 추가

  19. 19

    두 목록을 비교하고 세 번째 목록 .net 4.0에서 차이를 반환합니다.

  20. 20

    사전의 목록을 반복하고 목록의 목록과 비교

  21. 21

    LINQ 두 목록을 비교하고 결과를 하나의 목록에 넣기

  22. 22

    빈 목록이 반환됩니까?

  23. 23

    Excel에서 두 목록을 비교하고 고유 항목과 중복 항목을 찾습니다.

  24. 24

    두 개의 사전 목록을 반복하고 루프없이 튜플 목록을 만듭니다.

  25. 25

    동시에 두 개의 목록을 반복하고 한 목록의 숫자가 다른 목록의 항목보다 큰지 확인합니다.

  26. 26

    목록을 포함하고 연결된 두 모델을 통해 반복 Django

  27. 27

    getSqlMapClientTemplate (). queryForList ()가 결과 목록을 반환하지 않습니다.

  28. 28

    Scala는 두 시퀀스를 반복하고 목록에 추가합니다.

  29. 29

    Python-개별 빈 목록을 반복하고 행 선택

뜨겁다태그

보관