없이 int 치의리스트에 값을 할당이 할 수있는 짧은 방법이 :초기화 및 루프
List<int> mins = new List<int>();
for(int i = 0; i<60; i++)
{
mins.Add(i+1);
}
기능 버전은 C#에서 사용 가능한 경우 감사도 F # 버전에 감사드립니다.
없이 int 치의리스트에 값을 할당이 할 수있는 짧은 방법이 :초기화 및 루프
List<int> mins = new List<int>();
for(int i = 0; i<60; i++)
{
mins.Add(i+1);
}
기능 버전은 C#에서 사용 가능한 경우 감사도 F # 버전에 감사드립니다.
F 번호 :
open System.Collections.Generic
let r = new List<_>([1..60])
C 번호 : 이것은 C# 버전을 위해 그것을 할 것
var r = new List<int>(Enumerable.Range(1, 60));
List<_>
(C#의 경우)은 연결된 목록이 아니라 동적 배열입니다. F #에서 List<_>
은 ResizeArray<_>
입니다. 당신은 ResizeArray
모듈을 사용할 수 있습니다
let mins = new ResizeArray<int>()
for i=0 to 60-1 do
mins.Add(i+1)
:
가 여기에 직접 번역 F # 버전 년대 ResizeArray < _> 형식이 F # 핵심에 정의되어 있는지
#r "FSharp.PowerPack.dll"
let mins = ResizeArray.init 60 (fun i -> i+1)
공지 사항을, 같은 이름의 모듈입니다 F # PowerPack에서.
: 내부적으로
List<int> mins = Enumerable.Range(1, 60).ToList();
것이다그 루프, 틀림없이. IEnumerable<int>
이 만족 스럽다면 ToList
전화를 울리면 게으른 평가가 표시됩니다.
[ 1 .. 60 ] |> ResizeArray.ofSeq
이 명시 적으로 생성자를 호출과 동일하지만, 조금 더 좋은 구문을 (가지고 : 당신은 이미 내가
F 번호에, 아마 작성합니다 :) 참조 이제 F 번호 버전이 있어요 파이프 라이닝을 사용할 수 있으며 생성자의 유형 매개 변수를 지정할 필요가 없습니다.
왜 'let r = new List <_> (seq {1..60})'이 아니겠습니까? – gradbot
괜찮습니다. 또는 Enumerable.Range, C# 에서처럼. 또는 다른 것들을 잔뜩. 질문이 '짧다'는 질문을 했으므로 간략히 설명하려고했습니다. – Brian