문제

부인 성명: F# 초보자 질문입니다!

Visual Studio에서 F# 파일에 다음을 입력하면

#light

let squares =
    seq { for x in 1 .. 10 -> x * x }

printf "%A" squares

강조 표시하고 눌러 F# 대화형을 실행합니다. Alt+입력하다, 대화형 창의 출력은 다음과 같습니다.

> 
seq [1; 4; 9; 16; ...]
val squares : seq<int>

>

하지만 전체 시퀀스를 보고 싶습니다.

> 
seq [1; 4; 9; 16; 25; 36; 49; 64; 81; 100]
val squares : seq<int>

>

이것이 가능한가?내가 놓친 설정이 있기를 바랍니다.

도움이 되었습니까?

해결책

'seq'는 게으른 평가 구조입니다. 그것은 무한 할 수 있으므로 FSI가 처음 몇 가지 값 만 보여주는 이유입니다. 모든 것을보고 싶다면 쉽게 할 수있는 일은 목록으로 변환하는 것입니다.

printf "%A" (squares |> Seq.tolist)

다른 팁

목록으로 변환하지 않고 시퀀스의 모든 값을 표시하려면 다음과 같이 시퀀스에서 직접 반복할 수 있습니다.

Seq.iter (printfn "%A") squares

위험을 감수하고 있다는 점에 유의하세요.브라이언이 암시한 것처럼 순서가 무한하다면 꽤 오래 기다려야 할 수도 있습니다.(이 경우, Seq.skip 그리고 Seq.take 당신의 친구입니까)

대안은 설정하는 것입니다 fsi.PrintLength 적절하게 많은 수의 경우, 예를 들어

> fsi.PrintLength <- 500
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top